错误显示为"表达式必须具有const值"当整数变量用于在c ++中声明数组大小时

时间:2014-01-07 16:52:20

标签: c++ visual-studio-2010

嗨我有以下代码,

# include <iostream>
# include <limits>

using namespace std;

int main()
{
    int runs,innings,timesnotout,n;
    cout<<"Enter the number of players:";
    cin>>n;
    const char name[n][10]; //here error shows as "Expression must have a  constant value" is displayed


}

我试图从输入中获取n值,然后使用n值作为数组大小

3 个答案:

答案 0 :(得分:2)

这意味着错误消息的确切含义。您只能使用声明数组的常量表达式。在您的情况下,最好使用std::vector<std::string>或甚至std::vector<std::array<char, 10&gt;&gt;`或在堆中分配数组。

答案 1 :(得分:1)

如果你打算保留每个玩家的统计数据,你应该定义一个结构/类和一个这样的向量:

struct PlayerStats
{
    std::string Name;
    unsigned int Runs;
    unsigned int Innings;
    unsigned int TimesNotOut;
};

int main()
{
    unsigned int n = 0;
    std::cout << "Enter number of players:  ";
    std::cin >> n; // some error checking should be added
    std::vector<PlayerStats> players(n);
    // ... etc
    return 0;
}

答案 2 :(得分:0)

如果您想在不事先知道尺寸的情况下存储某些东西,可以使用矢量。因为它可以在程序执行期间动态增长。

在您的情况下,您可以使用以下内容:

#include <iostream>
#include <vector>

using namespace std;

int main() {

   std::vector<string> nameVec;

   nameVec.push_back("John");
   nameVec.push_back("Kurt");
   nameVec.push_back("Brad");
   //Warning: Sometimes is better to use iterators, because they are more general
   for(int p=0; p < nameVec.size(); p++) {
     std::cout << nameVec.at(p) << "\n";
   }

}