在c ++中设置基本创建

时间:2017-07-19 17:41:38

标签: c++

我试图通过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相关的错误。 我做错了什么?

1 个答案:

答案 0 :(得分:6)

您的代码是非法的(在许多地方都是错误的,因此请花几天时间阅读good C++ book然后查看某个C++ reference网站)。你不能将变量长度数组声明为structclass的成员(即使你可以,你的语法也是错误的;一些编译器支持它们作为扩展名和C99 - 但没有C ++方言 - 有flexible array members)。

您最好使用现有的标准C ++ containers。如果你不能使用它们,你需要指针(你应该更喜欢smart pointers)。

即使您有一些编译器接受VLA作为扩展,您可能还需要dynamically allocate一个内存区域。

我强烈建议学习使用容器。

别忘了启用所有警告&amp;编译时调试信息。使用GCC,使用g++ -Wall -Wextra -g进行编译。使用调试器(gdb)和valgrind