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將自動呼叫靜態建構函式來初始化類,也就是說我們無法直接呼叫靜態建構函式,也就無法控制什麼時候執行靜態建構...