【问题标题】:how to revise a const int value c++如何修改 const int 值 c++
【发布时间】:2016-01-06 14:34:18
【问题描述】:

我有一个“预期的常量表达式”错误。 这是我的错误部分:

 int row=counter/4;     
int goals[row][4];---> this part has error for "row" variable

如何像常量值一样定义“行”变量?或者如何解决这个问题?

【问题讨论】:

  • 你是如何定义计数器的?
  • 请发mvce
  • 对不起,但这没关系,计数器值是从文件中获取的;就像那个'FILE *fffile; fffile= fopen("C:\\goals.txt","r" );诠释我=0;诠释 j = 0;整数计数器=0;诠释 c=0; while(!feof(fffile)){ //dosyanın sonuna kadar gitme fscanf(fffile,"%d",&c);计数器++;'
  • @ozz 当然确实很重要。您不能从 runtime 获得的值创建 compile-time 常量。您可能需要std::vector
  • @JérômeLeducq, std::array 在这里不是一个选项,它会遇到同样的问题。

标签: c++ variables constants


【解决方案1】:

C++ 不允许可变大小的数组。在您的示例中,row 不是常量,因此不能用于指定数组大小。

要解决此问题,您可以切换到 C(它确实允许此类数组)或使用 C++ 构造 - 例如 std::vector

语法上正确的更改是将行改写为

const size_t row = counter / 4;

但是您需要 counter const,如果您从用户输入中获取它,您将无法做到这一点。

【讨论】:

    【解决方案2】:

    您只能在数组声明中使用编译时常量。

    constexpr 可以帮助你,

    http://en.cppreference.com/w/cpp/language/constexpr

    但不适用于所有编译器,请在此处寻找答案:

    constexpr function as array size

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多