我看到了類似的例子,但沒有完全理解它們,所以請不要馬上將其標記爲重複。 我認爲我的問題有一個簡單的解決方案,我只學習C++
。模板類的前向聲明C++
我想用:
template<class T, std::size_t N>
class arnas_array {
//a copy of std:array functionality, basically, here.
};
在另一個類的頭,另一個文件,例如:
class options_databaze {
public:
struct options_to_save{
arnas_array<char, 123> option_name;
//char option_name[103];
int * option_value_pointer;
};
};
我不能得到它的工作。 這樣的正向聲明將無法工作:
template<class T, std::size_t N>
class arnas_array;
我不知道很多關於這個問題,我第一次在這裏卡住了,任何例子是金。
error C2079: 'options_databaze::options_to_save::option_name' uses undefined class 'arnas_array<char,123>'
你前進的聲明實際上是完全正常的,但你不能使用前聲明的類聲明該類型中的一員,直到類完全定義(因爲否則編譯器將沒有確定構件的尺寸的方式,因此'struct options_to_save'的大小)。您可以聲明一個指向該類型的成員,但是(無論數據類型如何,數據指針的大小都是相同的)。 (並且你在類定義的末尾丟失了';',但是我確定這只是一個複製粘貼錯誤。) – Cameron 2014-12-05 22:11:28
我應該如何避免前向聲明,然後在每個文件中使用相同的類? – Tomas 2014-12-05 22:14:30
作爲提示,始終包含在發佈 – harmic 2014-12-05 22:15:43