C++ 语法错误:';常数';和缺少类型说明符-假定为int。注:C++;不支持默认的int
我试图创建简单的结构C++ 语法错误:';常数';和缺少类型说明符-假定为int。注:C++;不支持默认的int,c++,visual-c++,C++,Visual C++,我试图创建简单的结构 template <typename T> struct Element { T eValue; // Element Value Element <T>* next_element; }; template <typename T, int size> struct dynamic_array { Element <T> first_element; Element <T>
template <typename T>
struct Element
{
T eValue; // Element Value
Element <T>* next_element;
};
template <typename T, int size>
struct dynamic_array
{
Element <T> first_element;
Element <T>* last_element = &first_element;
add(2);
void add(int count)
{
for (int i = 0; i < count; i++) {
last_element -> next_element = new Element <T>;
last_element = last_element -> next_element;
}
}
};
模板
结构元素
{
T eValue;//元素值
元素*下一个元素;
};
模板
结构动态数组
{
元素第一个元素;
元素*最后一个元素=&第一个元素;
增加(2);
无效添加(整数计数)
{
for(int i=0;i下一个元素=新元素;
最后一个元素=最后一个元素->下一个元素;
}
}
};
正如您所看到的,我试图在结构内部使用add()函数,但我得到以下错误:
错误C2059:语法错误:“常量”
消息:请参阅正在编译的类模板实例化“dynamic_array”的参考
错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认INT/P>
警告C4183:“添加”:缺少返回类型;假定为返回“int”的成员函数
但当我试图从main()函数使用此函数时,代码被成功编译
int main()
{
dynamic_array <int, 5> myArray;
myArray.add(5);
}
intmain()
{
动态数组;
添加(5);
}
我不知道为什么会出现这些错误。我可以猜测这是与模板相关的东西,因为我最近开始使用它们,正如interjay所指出的,您需要在构造函数中添加代码,以便在创建对象时执行它。但您应该了解一个基本事实,即无论是否使用模板,在定义结构时,编译器将在使用它时将其转换为各自的结构(考虑向量)。现在,当您创建模板结构的对象时,内存将分配给该对象,在此之前不会执行任何代码。因此,如果您希望在对象创建后立即执行任何代码,请将代码放入constuctor中,如果您希望代码在特定时间执行,如此处的add(int count),请将它们放入成员函数中,并在需要时调用它们。类似于
add(2)的代码代码>必须位于函数内部。也许你想把它放在构造器里?是的,你是对的。现在它起作用了。谢谢您您可以通过对非模板类进行相同的尝试,轻松检查您的猜测是否连接到模板,然后您就会知道您的猜测是错误的。尝试理解错误消息。。。C4430/C4183:在类定义中,任何形式为name1 name2(something)
的都是成员函数声明。如果没有“name1”,则它是缺少返回类型的成员函数声明,而不是函数调用。C2059:2
不是函数声明中的有效参数。(不幸的是,这个错误显然是首先显示的,因为它是另一个错误的结果)。