莱恩
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/