C中如何在類外定義函式C中如何在類别範本外定義函式

2021-03-07 09:49:46 字數 2857 閱讀 7615

1樓:匿名使用者

目前的大多數***piler還不能解析在類的宣告之外定義的member template。

c++ standard 對於在類定義之外定義member template 的標準寫法如下(不過在vc++6.0下無法編譯通過):

template template

void a::test(t1 p)

2樓:匿名使用者

#include

using namespace std;

template

class ***pare

;// 在類别範本外面定義其成員函式:

template

***pare::***pare(numtype a,numtype b)

template

numtype ***pare::max()template

numtype ***pare::min()

3樓:匿名使用者

是想定義在原始檔嗎?

1.這是不允許的,因為模板類的成員函式的定義,是一種不完整的定義.2.由於編譯器不知道模板引數的具體型別,無法為其成員函式生成**.3.

編譯器在成員函式的呼叫處,才最終知道如何生成**.總之,模板類的成員函式的定義不能像普通類的成員函式一樣,定義在源**中,而只能定義在標頭檔案中.

如果想定義在標頭檔案中的模板類以外,倒是可以做到,如下:

template

***pare::***pare(numtype a,numtype b)

template

numtype ***pare::max()template

numtype ***pare::min()

4樓:匿名使用者

同樣的定義一個模板函式。

5樓:落雨轟隆

類别範本的成員函式的實現寫在標頭檔案(.h)的類內部或類外部都行,

但是,類别範本成員函式在另一個檔案(.cpp)裡實現它報錯

error lnk2019: 無法解析的外部符號 "public: void __thiscall ***pare::

test(void)" (?test@?$***pare@m@@qaexxz),該符號在函式 _main 中被引用

c++怎麼類外定義模板類的成員函式? 模板引數怎麼呼叫?

6樓:匿名使用者

#ifndef stack_h

#define stack_h

#include

#include

/*** 棧

*/template

class stack

;template

stack::stack() : top(-1){}template

void stack::push(const itemtype& item)

top++;

array[top] = item;

}template

itemtype stack::pop()itemtype temp = array[top];

top--;

return temp;

}template

itemtype stack::peek() constreturn array[top];

}template

bool stack::isempty() consttemplate

bool stack::isfull() consttemplate

void stack::clearstack()}#endif   //stack_h

呼叫的方法,如下:

#include

#include"stack.h"

int main()

c++中函式模板和模板函式的區別

7樓:116貝貝愛

模板函式可以進行隱式的資料型別轉換,中函式模板不會進行自動型別轉換。

一、函內數模版和同名普通函容數在同一個作用域中,會優先呼叫哪個函式,具體如下:

1.函式模型在進行呼叫的時候會進行嚴格的型別匹配,而普通函式在呼叫的時候,會進行函式引數型別轉換(前提是自動型別轉換)。

2.呼叫函式模版,本質是型別引數化,將要嚴格的按照型別進行匹配,不會進行自動型別轉換

3.呼叫普通函式,可以進行隱式的資料型別轉換(前提是可以進行自動型別轉換),這是普通函式和模版函式的本質區別。

二、函式模版可以像普通函式被過載

1.c++編譯器優先考慮普通函式:這是因為普通函式已經存在了,而模版函式還需要進一步的判斷,如果函式模版產生一個更好的匹配,那麼優先選擇函式模版。

2.可以通過空模版實參列表的語法限制編譯器只呼叫模版函式(也就是在引數名之後加上<>,隱含了自動型別推斷!),c++編譯器是如何支援模版機制的。

8樓:棒棒的

如果一個程式來中需要使用多自

種資料型別的比較,則下面思路合理的是()

定義多個不同

函式名的比較函式,完成不同型別的比較

b定義多個同名過載函式完成不同型別的比較

c定義一個比較函式模板完成對不同型別資料的比較d以上思路均不合理

c++模板類的派生類的成員函式寫在類外怎麼寫,怎麼呼叫??

9樓:砍侃看

你這應該指的bai

是將頭du檔案和cpp檔案分開編輯的意zhi思,很明顯了標頭檔案的內容

dao也回就是類的定義放在答一個檔案中,然後類的具體實現放在另一個檔案中,只不過類實現檔案需要include自己的標頭檔案。我理解的類外實現,應該是這個意思

C中如何在類中呼叫另類中的資料,C 中 如何在一個類中 呼叫另一個類中的資料?

c 窗體間傳遞資料有好多種方法,說下個簡單的 在要呼叫的窗體中新增被呼叫窗體欄位,構造方法中傳入被呼叫的窗體做引數,將被呼叫窗體的需要被呼叫的資料的訪問修飾符設定為 public 將form1的 listbox 的訪問修飾符設定為 public這樣就可以通過欄位.屬性 呼叫被呼叫窗體的資料了 pub...

c類成員函式可以定義變數嗎,C中定義的類,成員函式可以直接使用嗎

什麼叫 函式可以定義變數嗎 是在函式裡定義變數還是啥意思?沒有 函式可以定義變數 這種說法 c 中定義的類,成員函式可以直接使用嗎?沒有物件的時候要訪問類成員函式的話,只能訪問靜態成員函式。例如 class a 這樣可以在主函式裡直接用 a abc 這樣的語句進行呼叫。請教一下 c 類中privat...

C中如何呼叫靜態類中的建構函式

靜態建構函式既沒有訪問修飾符,也沒有引數。如果沒有編寫靜態建構函式,而這時類中包含帶有初始值設定的靜態欄位,那麼編譯器會自動生成預設的靜態建構函式。在建立第一個類例項或任何靜態成員被引用時,net將自動呼叫靜態建構函式來初始化類,也就是說我們無法直接呼叫靜態建構函式,也就無法控制什麼時候執行靜態建構...