c 呼叫基類的建構函式(模板類)

2021-12-29 21:29:17 字數 974 閱讀 6568

**如下

#include

#include

#include

using namespace std;

template

class base

;template

base::base(t n)

template

void base::tostring()

;template

derive::derive(t n):base(n)

int main(void)

需要注意的是,派生類呼叫基類的建構函式是base(n)這樣子的,要加上模板引數,不然會編譯錯誤。

如果沒有模板引數t,出現的錯誤是

../src/ctest.cpp: 在建構函式『derive::derive(t)』中:

../src/ctest.cpp:41:24: 錯誤: 類『derive』沒有名為『base』的字段

../src/ctest.cpp: in instantiation of 『derive::derive(t) [with t = int]』:

../src/ctest.cpp:49:17: required from here

../src/ctest.cpp:41:30: 錯誤: 對『base::base()』的呼叫沒有匹配的函式

../src/ctest.cpp:41:30: 附註: 備選是:

../src/ctest.cpp:21:1: 附註: base::base(t) [with t = int]

../src/ctest.cpp:21:1: 附註: 備選需要 1 實參,但提供了 0 個

../src/ctest.cpp:11:7: 附註: base::base(const base&)

../src/ctest.cpp:11:7: 附註: 備選需要 1 實參,但提供了 0 個

make: *** [src/ctest.o] 錯誤 1

C 模板函式,模板類

模板如字面的意思為模具模板,並不是乙個正真的物體。例如,在編寫比較兩個數大小的 中,我們可能要比較兩個整數的大小,也能需要比較浮點數等等大小。在這些 中,基本的邏輯都是相同的,只是比較數的型別不同。此時我們就可以用模板這個概念來完成對於不同型別的引數而相同的邏輯的操作。而模板會根據實際的引數型別推演...

C 泛類 函式模板 類模板

1.函式模板 1.1 函式模板的概念 函式模板代表了乙個函式家族,該函式模板與型別無關,在使用時被引數化,根據實參型別產生函式的特定型別版本。1.2 函式模板格式 template 返回值型別 函式名 引數列表 template templatevoid swap t1 x,t1 y tips ty...

c ,派生類無法呼叫基類建構函式

include include using namespace std class undergraduate void showinfo private char id 10 char name 10 char major 10 class graduate public undergraduat...