C++ 编译c+时架构x86_64的未定义符号+;

C++ 编译c+时架构x86_64的未定义符号+;,c++,compiler-errors,C++,Compiler Errors,我不断地犯错误,这让我发疯 Undefined symbols for architecture x86_64: "SSResourcesDepot::_sharedInstance", referenced from: SSResourcesDepot::sharedInstance() in SSResourcesDepot.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command

我不断地犯错误,这让我发疯

Undefined symbols for architecture x86_64:
  "SSResourcesDepot::_sharedInstance", referenced from:
    SSResourcesDepot::sharedInstance() in SSResourcesDepot.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我的代码如下所示:

#ifndef SolarSystem_SSResourcesDepot_h
#define SolarSystem_SSResourcesDepot_h
#include "SSResource.h"

/* SSResourcesDepot is implemented as a Singleton Depot that keeps track of all
 * requested Resource objects, and avoid loading them twice in memory. */
class SSResourcesDepot {

    SSResourcesDepot() {};
    SSResourcesDepot(SSResourcesDepot const&){};
    SSResourcesDepot& operator=(SSResourcesDepot const&){};

    static SSResourcesDepot* _sharedInstance;

    SSResource* _search(std::string resourceName);
    SSResource* _load(std::string resourceName);

public:
    static SSResourcesDepot* sharedInstance();
    SSResource* requestResource(std::string resourceName);

};

#endif
以及:

#包括
#包括“SSResourcesDepot.h”
#pragma标记公共方法
SSResourcesDepot*SSResourcesDepot::sharedInstance(){
如果(SSResourcesDepot::_sharedInstance==0){
SSResourcesDepot::_sharedInstance=new SSResourcesDepot();
}
返回SSResourcesDepot::\u共享状态;
}
SSResource*SSResourcesDepot::requestResource(std::string resourceName){
SSResource*resource=此->搜索(resourceName);
如果(resource==NULL)resource=this->\u加载(resourceName);
返回资源;
}
#pragma标记私有方法
SSResource*SSResourcesDepot::\u搜索(标准::字符串资源名称){
返回NULL;
}
SSResource*SSResourcesDepot::_加载(标准::字符串资源名称){
返回NULL;
}
对我来说,它似乎完全可以运行,但Apple-O-Matcher一直在抱怨,而且它不允许我编译…:-


提前谢谢

您没有初始化您的
静态
成员


到您的实现文件。

thaks,它成功了。。。稍微调整一下:
SSResourcesDepot*SSResourcesDepot::\u sharedInstance=NULL(命名空间位于错误的位置!)
#include <iostream>
#include "SSResourcesDepot.h"


#pragma mark Public methods
SSResourcesDepot* SSResourcesDepot::sharedInstance() {
    if (SSResourcesDepot::_sharedInstance == 0) {
        SSResourcesDepot::_sharedInstance = new SSResourcesDepot();
    }
    return SSResourcesDepot::_sharedInstance;
}

SSResource* SSResourcesDepot::requestResource(std::string resourceName) {
    SSResource *resource = this->_search(resourceName);
    if (resource == NULL) resource = this->_load(resourceName);
    return resource;
}


#pragma mark Private methods
SSResource* SSResourcesDepot::_search(std::string resourceName) {
    return NULL;
}

SSResource* SSResourcesDepot::_load(std::string resourceName) {
    return NULL;
}
SSResourcesDepot* SSResourcesDepot::_sharedInstance = NULL;