在C ++中,如何声明一个类将使用的数组?

时间:2016-03-18 18:36:16

标签: arrays string class declaration

我尝试过的谷歌搜索引导我找到程序中有错误的人。我只是知道如何正确地做到这一点,而不是从错误的代码中回溯。

我有一个数组,它是const int。

在我的班级中,我想初始化一个不同的数组,但元素数量相同。

在初始化第一个阵列后,在I级尝试过:

int array[array.length()];

但编译器认为它不是一个常量表达式。

即使我

const string thestring = "Dummy example";
const static int strlen = (int)thestring.length();

然后在课程I中:

class dostuff {
    int newstring[strlen];
);

编译器仍抱怨我。

这让我首先尝试声明,例如:

const string thestring = "Dummy";

然后在课堂上,只需手工计算元素:

class Enigmatise {
    int duplicatelengthstring[5]; // Just counted by hand. :-(
);

编译器很高兴它现在有一个常量表达式,但我不高兴,因为如果我将主字符串的定义更改为"更多字符",那么它就会失效让我把它们算出来,或者用.length()来表达它们,然后在类中使用一个新的常量数值表达式,手动完成所有操作。这看起来很容易发生。

因此,如果我有

const string thestring = "Dummy example";

如何在类中声明另一个与类中虚拟元素长度相等的数组?

1 个答案:

答案 0 :(得分:0)

您可以使用动态分配;

class anotherclass {
        const std::string thestring;
        int * const otherArray;

        anotherclass() : thestring("some string"),
                         otherArray(new int[(int)thestring.length()]){}
        ~anotherclass(){delete[] otherArray;}
   };

编辑:此编译没有警告

class anotherclass {        
    static const std::string thestring;
    static const int strlen;
    public:
    void dosomething( ){int g[strlen]; }
};


const std::string anotherclass::thestring = "mystring";
const int anotherclass::strlen = anotherclass::thestring.length();