我试图通过struct实现基本方法的设置。 这是我的变体:
#include <iostream>
using namespace std;
struct Set<T> {
int n;
T[n] elements;
}
int main(){
struct Set microSet;
int oneElm, length;
cin>>length;
microSet.n=length;
for(int i=0;i<length;i++) {
cin>>oneElm;
microSet.elements[i]=oneElm;
}
for(int i=0;i<length;i++)
cout << microSet.elements[i];
return 0;
}
Compilator向我展示了与sruct相关的错误。 我做错了什么?
答案 0 :(得分:6)
您的代码是非法的(在许多地方都是错误的,因此请花几天时间阅读good C++ book然后查看某个C++ reference网站)。你不能将变量长度数组声明为struct
或class
的成员(即使你可以,你的语法也是错误的;一些编译器支持它们作为扩展名和C99 - 但没有C ++方言 - 有flexible array members)。
您最好使用现有的标准C ++ containers。如果你不能使用它们,你需要指针(你应该更喜欢smart pointers)。
即使您有一些编译器接受VLA作为扩展,您可能还需要dynamically allocate一个内存区域。
我强烈建议学习使用容器。
别忘了启用所有警告&amp;编译时调试信息。使用GCC,使用g++ -Wall -Wextra -g
进行编译。使用调试器(gdb
)和valgrind。