无法从静态方法返回类Foo的实例

时间:2013-10-27 11:40:52

标签: c++

我想从静态方法返回第一个创建类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 ++的新手,但我记得我从静态方法创建了类实例构造函数而没有问题。

1 个答案:

答案 0 :(得分:2)

静态成员也必须在.cpp文件中定义:

Foo* Foo::_firstInstance;