的功能,這是我的類定義:調用靜態成員
#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