Я пытаюсь инициализировать статический член класса и не повезло. Вот тест:Инициализация статического члена класса
файл test.h
#include <string>
class Test {
public:
static void init(char*);
private:
static std::string *sp;
};
файл test.cpp
#include "Test.h"
// Initialize the class
void
Test::init(char *foo) {
Test::sp = new std::string(foo);
}
int main(int argc, char** argv) {
Test::init(argv[1]); // call the class initializer
}
линкер выдает:
Undefined symbols for architecture x86_64:
"Test::sp", referenced from:
Test::init(char*) in Test-OK13Ld.o
ld: symbol(s) not found for architecture x86_64
В реальном мире, Init() собирается сделать некоторую реальную работу, чтобы установить статический член. Может кто-нибудь указать на ошибку?
'статическими станд :: строка * зр;' не difined. – user1810087
также, зачем использовать указатель на std :: string? – billz
Ну, я знаю, что такое неопределенный ref/unresolved extern, так что ссылка довольно широкая. Комментарий @itwasntpete напомнил мне, что все, что у меня есть, - это декларация. Поэтому, по-видимому, мне нужно определение (но вне) определения класса. – Chap