【问题标题】:Undefined symbol: Symbol referencing errors. No output written to main未定义符号:符号引用错误。没有输出写入 main
【发布时间】:2012-12-02 23:23:27
【问题描述】:

有以下程序:

#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

编译完成且没有错误(第一个命令)。但是链接给出了这个错误:

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    

想知道如何纠正这个问题。

【问题讨论】:

    标签: c++ g++ undefined symbols


    【解决方案1】:

    您需要在某处定义变量,即

    Record *Record::record;
    

    【讨论】:

    • +1 某处超出了类的范围,但在类定义之后。
    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多