Неопределенный символ: символ, ссылающийся на ошибки. Нет вывода, записанного на главную

Иметь следующую программу:

#include <iostream>
#include <string>

using namespace std;

class Record
{
public:
static Record* GetInstance(string name);
void printName();
private:
Record(string name);
string name_;
static Record *record;
};

Record::Record(string name)
:name_(name)
{
}

Record*
Record::GetInstance(string name)
{
if(record == NULL) {
record = new Record(name);
}
return record;
}

void
Record::printName()
{
cout << name_ << endl;
}

int main()
{
Record* record1 = Record::GetInstance("sellers");
record1->printName();
Record* record2 = Record::GetInstance("customers");
record2->printName();
}

Я собираю и связываю с:
g ++ -g -c -Wall main.cpp
g ++ -g -Wall main.o -o main

Компиляция завершается без ошибок (1-я команда). Но ссылка дает эту ошибку:

Undefined                       first referenced
symbol                             in file
Record::record                      main.o
ld: fatal: Symbol referencing errors. No output written to main
collect2: ld returned 1 exit status

Хотите знать, как это исправить.

3

Решение

Вам нужно где-то определить переменную, т.е.

Record *Record::record;
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]