繁体   English   中英

如何在文本编辑器中处理[-Wc ++ 11-extensions]

[英]How to deal with [-Wc++11-extensions] in the text editor

当我尝试将myCurrentTry初始化为1并将myMaxTries初始化为5时,我遇到警告,错误是:

非静态数据成员的类内初始化是C ++ 11扩展[-Wc ++ 11-extensions]

实现这一目标的代码是:

class starUFO{
public:
    void Reset();
    int getMaxTries();
    int getCurrentTry();
    bool isGameWon();
    bool checkGuessValidity(string);
private:
    int myCurrentTry = 1;
    int myMaxTries = 5;
};

我听说有人说“尝试使用-std = c ++ 11编译”,这确实在我的命令行中删除了警告但是我想修复VS代码配置,所以它不会将此视为警告,我有最新的VS Code,但似乎有一个更深层次的问题。

编写一个构造函数并在那里初始化你的成员变量:

class starUFO
{
    private:
        int myCurrentTry;
        int myMaxTries;

    public:
        starUFO()
        :   myCurrentTry(1),
            myMaxTries(5)
        {
        }

        ...
};

要告诉VSCode您正在使用哪个C ++标准,请打开命令选项板(Ctrl + Shift + P),选择“C / C ++:编辑配置(UI)”,向下滚动并更改“C ++标准”下拉列表。 在这种情况下,请选择“c ++ 11”或更高版本。

这假设您使用的是“IntelliSense”引擎,而不是较旧的“Tag Parser”引擎:转到文件→首选项→设置→C / C ++→“C_Cpp:Intelli Sense Engine”,并确保将其设置为“默认” ”。

这些选项存在于VSCode 1.37.1和C / C ++扩展名 0.25.1(又名“cpptools”)中。 我不知道他们何时被介绍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM