簡體   English   中英

模板類中構造函數的語法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM