我想从静态方法返回第一个创建类Foo的实例(将在所有程序生命周期中创建一个实例)。这里有示例代码:
//的.h
#pragma once
class Foo
{
static Foo* _firstInstance;
public:
Foo();
~Foo();
static Foo* GetFirstFoo();
};
//.cpp
#include "stdafx.h"
#include "Foo.h"
Foo::Foo()
{
_firstInstance = this;
}
Foo::~Foo()
{
}
Foo* Foo::GetFirstFoo()
{
return _firstInstance;
}
但我有下一个错误:
Error 1 error LNK2001: unresolved external symbol "private: static class Foo * Foo::_firstInstance" (?_firstInstance@Foo@@0PAV1@A) c:\Users\Brans\documents\visual studio 2013\Projects\testSt\testSt\Foo.obj testSt
有什么问题?我是c ++的新手,但我记得我从静态方法创建了类实例构造函数而没有问题。
答案 0 :(得分:2)
静态成员也必须在.cpp
文件中定义:
Foo* Foo::_firstInstance;