C 中類模板新增友元函式顯示錯誤的解決方法

2021-10-10 18:40:42 字數 1566 閱讀 7751

//類模板中新增友元函式

//(1):要新增的友元函式是普通函式,那麼可以按照類中的方法即可

//(2):如果新增的友元函式中含有seqln&i這樣的型別變數,那麼這樣的函式便不是普通函式,這實際上是函式模板

//如果呼叫的是這一類,那麼必須要提前宣告

//template

//void display(seqln&c);

//並且在類模板中要加上,說明呼叫的是函式模板,並且型別變數是類模板中的型別變數,如果沒有使用類模板中的型別變數加上<>即可,說明是函式模板

#include

#include

using

namespace std;

#define initsize 20

template

<

class

t>

class

seqln

;template

<

class

t>

void

display

(seqln

&c);

template

<

classt1,

class

t2>

void

chartoint

(seqln

&c, seqln

&i);

template

<

class

t>

class

seqln

;template

<

class

t>

seqln

::seqln()

template

<

class

t>

seqln::~

seqln()

template

<

class

t>

int seqln

::insert

(t x,

int n)

template

<

class

t>

int seqln

::delete

(t&x,

int n)

template

<

class

t>

int seqln

::seqsize()

const

template

<

class

t>

void

display

(seqln

&c)void

print

(seqln<

int>

&i)template

<

classt1,

class

t2>

void

chartoint

(seqln

&c, seqln

&i)int

main()

模板類中的友元函式

模板類中友元函式不要濫用,最好只用來過載左移和右移運算子 和 如果用於普通友元函式過載,會非常麻煩,即使類模板定義和宣告分開,也建議都寫在.h或.hpp檔案中,即要保證模板類的定義和宣告在乙個檔案中,否則,將不能找到函式的定義,這和模板的二次編譯有關。參見官方的stl庫風格可知,它也遵循這一原則,即...

C 中的 友元函式 友元類

1.友元函式的簡單介紹 1.1為什麼要使用友元函式 在實現類之間資料共享時,減少系統開銷,提高效率。如果類a中的函式要訪問類b中的成員 例如 智慧型指標類的實現 那麼類a中該函式要是類b的友元函式。具體來說 為了 使其他類的成員函式直接訪問該類的私有變數。即 允許外面的類或函式去訪問類的私有變數和保...

C 友元函式 友元類

友元函式和友元類 採用類的機制後實現了資料的隱藏與封裝,類的資料成員一般定義為私有成員,成員函式一般定義為公有的,依此提供類與外界間的通訊介面。但是,有時需要定義一些函式,這些函式不是類的一部分,但又需要頻繁地訪問類的資料成員,這時可以將這些函式定義為該函式的友元函式。除了友元函式外,還有友元類,兩...