我看到了类似的例子,但没有完全理解它们,所以请不要马上将其标记为重复。 我认为我的问题有一个简单的解决方案,我只学习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