我知道数组需要有一个const int才能初始化,所以我主要使用它。我主要希望这样做,因为我希望能够根据需要轻松修改这些数字。
const int magicWordCount = 10;
compareWords(magicWordCount);
该函数的声明为:
void compareWords(const int);
定义:
void Words::compareWords(const int magicWordCount)
{
std::string magic[magicWordCount] = {};
convertToStringArray(magicBuffer, magicBufferLength);
}
当我这样做时,Intellisense告诉我,定义中的“ magicWordCount”会加下划线,表达式必须具有恒定值。我对值不是恒定的地方感到困惑。有什么想法吗?
最佳答案
尽管magicWordCount
是const
,但据编译器所知,它是运行时常量,而不是编译时常量。换句话说,它可以确保magicWordCount
的值不会在Words::compareWords
内部更改。
声明一个具有特定大小的数组还不够:编译器(和intellisense)要求一个编译时常量; magicWordCount
不是编译时常量。
您可以通过使用std::vector
而不是数组来避免此问题:
std::vector<std::string> magic(magicWordCount);
即使没有
const
,以上内容也可以使用。