C++ g++;ld:找不到架构x86_64的符号-没有更具体的错误消息

C++ g++;ld:找不到架构x86_64的符号-没有更具体的错误消息,c++,linker,g++,ld,C++,Linker,G++,Ld,我已经努力解决这个问题好几个小时了。。。 我有一个头文件、实现文件和驱动程序文件。 标题: 实施: int PhoneNumber::getnLive() { return nlive; } int PhoneNumber::getnText() { return ntext; } int PhoneNumber::getLive() { return live; } int PhoneNumber::getText() { return text; } 错误消息: ha

我已经努力解决这个问题好几个小时了。。。 我有一个头文件、实现文件和驱动程序文件。 标题:

实施:

int PhoneNumber::getnLive()
{
  return nlive;
}

int PhoneNumber::getnText()
{
  return ntext;
}

int PhoneNumber::getLive()
{
  return live;
}

int PhoneNumber::getText()
{
  return text;
}
错误消息:

habins-mbp:CS2000 Habin$ g++ -o PhoneNumber PhoneNumber.cpp PhoneNumberDriver.cpp

Undefined symbols for architecture x86_64:
  "PhoneNumber::live", referenced from:
      PhoneNumber::getLive() in PhoneNumber-f64d4d.o
      PhoneNumber::addLive() in PhoneNumber-f64d4d.o
  "PhoneNumber::text", referenced from:
      PhoneNumber::getText() in PhoneNumber-f64d4d.o
      PhoneNumber::addText() in PhoneNumber-f64d4d.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如果我使用g++-c,它编译意味着代码可以工作。似乎
静态int-live
给我带来了很多麻烦。 10个多小时来一直试图解决这个问题,但都没有结果。我要把我的电脑劈成两半了


请帮助我

您应该在实现部分定义所有静态成员变量

int PhoneNumber::live;
int PhoneNumber::text;
int PhoneNumber::MaxPhones;

嗯,那么你在实现部分定义变量,在头部分定义函数及其定义?这里已经回答了。定义?如何定义变量?我知道如何声明变量。非常新的编程,谢谢你的帮助!让它发挥作用。我只需要添加这些行。我不敢相信我在这个愚蠢的错误上花了这么多时间,但谢谢大家。
int PhoneNumber::live;
int PhoneNumber::text;
int PhoneNumber::MaxPhones;