警告:非静态数据成员初始化器仅与-std = c ++ 11或-std = gnu ++ 11一起提供

时间:2019-04-14 17:12:27

标签: c++ compiler-warnings

我可以在主菜单,插入菜单和“按级别显示”中将其用作计数器,因为我需要高度或树形

editor.action.selectToBracket

1 个答案:

答案 0 :(得分:0)

C ++类定义就像一个尚不存在的东西的蓝图,因此直到您实际创建该类的实例之前,初始化时都没有变量设置为零。这就是编译器所抱怨的。

唯一有效的时间是将变量声明为static,但这意味着该类的每个实例都会影响单个static变量。

对此有两种解决方案,如注释中所述,您可以简单地告诉编译器使用允许这种初始化方法的C ++ 11标准,或者可以将更常见和兼容的方法与较旧的编译器一起使用,是在构造函数中初始化它(就像您对root所做的那样),如下所示:

class BinarySearchTree
{
public:
        Node* root;
        int countHight;

        BinarySearchTree()
        {
           root = NULL;
           countHight = 0;
        }

        ~BinarySearchTree() 
        {
          return;
        }

        void insert(int value);
        void display(Node* temp);
        void DisplayByLevel(Node* temp,int level); 
};