This is my class definition:
#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 */
Basically this class downloads data from a rest api and calls the function in the callback parameter.
This is the GetData function:
void CloudFunctions::GetData(const CloudCallback &callback)
{
CloudFunctions::request.get("decks", [&](const std::string &result){
CCLOG("Loaded");
});
}
Unfortunately, this doesn't compile:
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)
If I turn request member and GetData function into non-static, then the code compiles.
What's going on here?