当前位置: 首页 > 知识库问答 >
问题:

奇怪的错误C2131:在VC 2015中,表达式的计算结果不是常数

万俟招
2023-03-14
// foo.hpp file 
class foo 
    { 
    public: 
      static const int nmConst; 
      int arr[nmConst]; // line 7 
    };  
// foo.cpp file 
    const int foo::nmConst= 5; 

编译器VC 2015返回错误:

1

为什么?nmConst 是静态常量,其值在 *.cpp 文件中定义。

共有1个答案

麻烨
2023-03-14

可以使用< code>static const int成员作为数组大小,但是您必须在。hpp的文件是这样的:

class foo
{
public:

    static const int nmConst = 10;
    int arr[nmConst];

};

这会有用的。

附言:关于它背后的逻辑,我相信编译器一遇到类声明就想知道数组成员的大小。如果你在类中留下静态const int未定义的成员,编译器会理解你正在尝试定义可变长度数组并报告错误(它不会等待看你是否真的在某个地方定义了nmconst)。

 类似资料:
  • 当试图从Hitbox API获取数据时,我得到了一个奇怪的结果。对于一个API的命令,这种情况每次都会发生,而对于另一个API的命令,这种情况只是有时发生。结果差不多是这样(这是我得到的最后一个结果): \U001F\B\0\0\0\0\0\U0003W8SμMU~S N T&N G6C$Z%9IGF[(\U0005\U000F(:6\U000F\B P C\U0015\N\U007F V\U00

  • 问题内容: 我正在回答这个问题,在这里我更喜欢生成器表达式并使用了它,我认为这样做会更快,因为生成器不需要先创建整个列表: Levon在解决方案中使用了列表理解功能, 但是当我做这些LC的时间结果比生成器快时: 然后我增加了列表的大小,并再次计时: 这次搜索生成器的时间比LC快,但是当我搜索中间元素(11)和最后一个元素时,LC再次击败了生成器表达式,我不明白为什么? 问题答案: 扩展Paulo的

  • 问题内容: 关于正则表达式有一个问题,试图回答我发现了另一个奇怪的事情。 这将打印YY。为什么?? 这会打印YXY 为什么勉强的正则表达式与“ X”字符不匹配?有,但为什么第一次不匹配三个符号和匹配的是两个,然后一个而不是三个?和第二个正则表达式仅匹配s而不匹配? 问题答案: 让我们依次考虑它们: 有两个匹配项: 在字符位置0处被匹配,并被替换为。 在字符位置1,空字符串被匹配,并被添加到输出中。

  • 我有一个程序可以读取两个文件(“incompleta.txt”和“completa.txt”),并比较两个文件中是否有相同的名称。其工作原理如下: 它将“completa.txt”中的所有名称存储在ArrayList中 问题是我的“lista.txt”看起来像这样:Image 第二条线完全是混乱和扭曲的。 我的Java代码:

  • 我使用Oracle11g(在Red Hat上)。我有一个带有XMLType列的简单常规表: 我使用Oracle SQL Developer(在Windows上): 很管用。我只有一个牢房。我可以双击并下载整个XML文件。 然后我试图以CLOB的形式得到结果: 很管用。我只有一个牢房。我可以双击并看到整个文本和复制它。但有个问题。当我把它复制到剪贴板时,我只得到前4000个字符。似乎在4000位置有

  • 我使用BufferedReader读取了一个txt文件。我将每一行添加到一个长字符串中,并将前面发布的代码应用于此。整个代码如下: 文本文件是一篇我想删除不是字母的所有内容(包括空白空间)的普通文章。摘录如下:“[16]自由软件基金会(FSF)成立于1985年,其本意是”自由“一词指的是发行的自由。”