我尝试过的谷歌搜索引导我找到程序中有错误的人。我只是知道如何正确地做到这一点,而不是从错误的代码中回溯。
我有一个数组,它是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";
如何在类中声明另一个与类中虚拟元素长度相等的数组?
答案 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();