莱恩

class Lane{
    //other declarations..
public:
    Lane(){}
    static Lane left_line;
    static Lane right_line;
};


车道

Lane Lane::left_line;


main.cpp

int main(){
    Lane::left_line();  //doesn't work


我做错了还是我做错了什么。我实际上对静态对象的工作方式感到困惑。

最佳答案

static成员在类内声明,并在类外初始化一次。无需再次调用构造函数。我在您的Lane类中添加了一个方法,以使其更加清晰。

class Lane{
    //other declarations..
public:
    Lane(){}
    static Lane left_line; //<declaration
    static Lane right_line;

   void use() {};
};


车道

Lane Lane::left_line; //< initialisation, calls the default constructor of Lane


main.cpp

int main() {
  // Lane::left_line(); //< would try to call a static function called left_line which does not exist
  Lane::left_line.use(); //< just use it, it was already initialised
}


通过执行以下操作,可以使初始化更加明显:

Lane Lane::left_line = Lane();


在Lane.cpp中。

关于c++ - 如何在C++中初始化静态类对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45896465/

10-11 18:13