我知道数组需要有一个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”会加下划线,表达式必须具有恒定值。我对值不是恒定的地方感到困惑。有什么想法吗?

最佳答案

尽管magicWordCountconst,但据编译器所知,它是运行时常量,而不是编译时常量。换句话说,它可以确保magicWordCount的值不会在Words::compareWords内部更改。

声明一个具有特定大小的数组还不够:编译器(和intellisense)要求一个编译时常量; magicWordCount不是编译时常量。

您可以通过使用std::vector而不是数组来避免此问题:

std::vector<std::string> magic(magicWordCount);


即使没有const,以上内容也可以使用。

09-27 18:28