gpt4 book ai didi

c++ - 无法编译简单的 C++ 程序,需要说明

转载 作者:行者123 更新时间:2023-11-30 00:38:01 24 4
gpt4 key购买 nike

我正在从我正在阅读的 Material 中删除这个例子。根据教科书,这里一切都很好。

然而,在尝试编译这些文件时,我遇到了一个问题(见下文)

3个文件

Date.cpp:

    #include "Date.h"

Date::Date()
{
setDate(1,1,1900);
}

Date::Date(int month, int day, int year)
{
setDate(month, day, year);
}

Date.h:

class Date
{
public:
Date ();
Date (int month, int day, int year);

void setDate(int month, int day, int year);
private:
int m_month;
int m_day;
int m_year;
};

main.cpp :

#include "Date.h"

int main ()
{
Date d1 ;

return 1;
}

当尝试使用g++ * 编译时,我得到

Undefined symbols for architecture x86_64:
"Date::setDate(int, int, int)", referenced from:
Date::Date() in cc8C1q6q.o
Date::Date() in cc8C1q6q.o
Date::Date(int, int, int) in cc8C1q6q.o
Date::Date(int, int, int) in cc8C1q6q.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

当我改为声明 Date *d; 时,程序会编译。当我改为声明 Date *d = new Date 时,程序失败。

请问这是怎么回事?

最佳答案

您还没有为您的类提供 setDate 方法。您在头文件中声明它,但您还需要为其提供实际的代码

您看到的错误是链接器 (ld) 告诉您,尽管您有一段代码试图调用该方法,但链接器没有知道它在哪里。

您需要提供方法,例如将以下内容放入Date.cpp:

void Date::setDate (int month, int day, int year) {
m_month = month;
m_day = day;
m_year = year;
}

关于c++ - 无法编译简单的 C++ 程序,需要说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11980561/

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