[英]Syntax for constructor in template class
我正在嘗試創建一個通用的循環緩沖區模板,但存在一些我無法理解的語法錯誤。 錯誤出在我的構造函數中,盡管我似乎以相同的方式參數化了析構函數並且該方法有效。 我遵循了 Stroustrup C++ 中的例子,他在作用域解析運算符之前和函數名中使用了一個參數,就像我一樣。 我也確定沒有循環依賴,因為我只編譯一個文件。 此外,實現和聲明在同一個文件 (CircBuf.h) 中,並且沒有相應的 .cpp 文件,因此鏈接也不應該成為問題。 我已嘗試根據 此解決方案添加“inline”關鍵字,但出現相同的錯誤。
/* CircBuf.h */
template<typename T> class CircBuf {
// don't use default ctor
CircBuf();
int size;
T *data;
public:
CircBuf(int);
~CircBuf();
};
template<typename T> CircBuff<T>::CircBuf<T>(int i) {
data = new T[i];
}
template<typename T> CircBuf<T>::~CircBuf<T>() {
delete data;
}
生成文件
all:
g++ -g -pedantic CircBuf.h -o prog
編譯器錯誤
CircBuf.h:13:22: error: ‘CircBuff’ does not name a type
CircBuff
當然不會命名類型,您想要的類型的名稱是帶有單個f
CircBuf
。
請注意,您還需要丟失構造函數和析構函數的尾隨<T>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.