gpt4 book ai didi

c++ - g++ ld : symbol(s) not found for architecture x86_64 - without more specific error message

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:36 27 4
gpt4 key购买 nike

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

class PhoneNumber
{
private:

const int MAXTEXTS;
static int live;
static int text; // number of total texts from all the phones.
string areaCode;
string exchange;
string line;
int nlive;
int ntext; // number of texts sent on this phone
public:

static int MaxPhones;
PhoneNumber();
PhoneNumber(string, string, string, int);
void inputPhoneNumber();
void displayPhoneNumber();
void sendText();
void dialNum();
int getLive();
int getText();
int getnLive();
int getnText();
static void addLive()
{
live++;
}
static void addText()
{
text++;
}

};

实现:

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,它编译意味着代码有效。似乎 static int live 给我带来了很多麻烦。一直试图解决这个问题 10 多个小时,但无济于事。我要把我的电脑折成两半!

请帮帮我

最佳答案

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

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

关于c++ - g++ ld : symbol(s) not found for architecture x86_64 - without more specific error message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22572748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com