0
我有一個列表作爲具有兩個模板參數的類的私有成員:列表元素的數據類型爲type
,列表元素的數目類型爲size
列表。爲此,我想使用我的兩個模板參數來使用列表的填充構造函數。這裏是我的嘗試:無法使用模板參數定義變量類型和大小的列表
#include <list>
template <typename type, unsigned int size>
class my_class {
private:
std::list<type> my_queue(size, 0);
// More code here...
};
我的做法似乎遵循提供here的信息和例子;但是當我編譯這個,我得到以下錯誤。
error: 'size' is not a type
error: expected identifier before numeric constant
error: expected ',' or '...' before numeric constant
看起來好像它可以通過其默認構造函數而不是填充構造函數來識別列表的聲明。誰能幫我解決這個問題嗎?
謝謝!
編輯:這裏是我修改的源程序更多的細節。我現在在公共方法上遇到麻煩。 注意:這是我班的頭文件。
#include <list>
template <typename T, unsigned int N>
class my_class {
private:
std::list<T> my_queue;
public:
// Constructor
my_class() : my_queue(N, 0) { }
// Method
T some_function(T some_input);
// The source for this function exists in another file.
};
編輯2:最終實現......謝謝你,@billz!
#include <list>
template <typename T, unsigned int N>
class my_class {
private:
std::list<T> my_queue;
public:
// Constructor
my_class() : my_queue(N, 0) { }
// Method
T some_function(T some_input){
// Code here, which accesses my_queue
}
};
這似乎是工作,我雖然它有一個輸入參數的公共方法,並返回匹配'T'類型。當我編譯調用這個方法的主程序時,它聲稱這個方法有一個「未定義的引用」。 (請參閱原文,我編輯了示例代碼以顯示此方法。)有沒有辦法解決這個問題? –
你是在my_class裏面定義了那個函數還是把它分隔開了? – billz
不能使用'CQ()'作爲名稱,它必須是類名作爲構造函數名稱 – billz