的功能,这是我的类定义:调用静态成员
#ifndef CloudFunctions_hpp
#define CloudFunctions_hpp
#include "WebRequest.hpp"
#include "external/json/document.h"
#include <stdio.h>
typedef std::function<void(const rapidjson::Document&)> CloudCallback;
class CloudFunctions
{
private:
public:
static WebRequest request;
static void GetData(const CloudCallback &callback);
};
#endif /* CloudFunctions_hpp */
基本上从REST API这个类下载数据并调用回调参数的功能。
这是的GetData功能:
void CloudFunctions::GetData(const CloudCallback &callback)
{
CloudFunctions::request.get("decks", [&](const std::string &result){
CCLOG("Loaded");
});
}
不幸的是,这并不编译:
Undefined symbols for architecture x86_64:
"CloudFunctions::request", referenced from:
CloudFunctions::GetData(std::__1::function<void (rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator> const&)> const&) in CloudFunctions.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如果我把要求成员和的GetData功能分为非静态,然后代码编译。
这是怎么回事?
你有没有申报你的静态变量的定义?例如'WebReqeust CloudFunctions :: request;' – foo
我应该在哪里声明它?你的意思是在课外? –
是你的cpp – foo