无法编译简单的C++程序,需要澄清
Can't compile simple C++ program, clarification needed
我从我正在讨论的材料中厌倦了这个例子。根据教科书,这里一切都很好。
然而,在尝试编译这些文件时,我遇到了一个问题(见下文)
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;
}
你关心从两个构造函数调用的函数 setDate 未定义
您需要类似.cpp文件中的内容
void Date::setDate(int month, int day, int year)
{
//code
}
您似乎从未定义过Date::setDate()
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- IPC使用多个管道和分支进程来运行Python程序
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 基于boost的程序的静态链接——zlib问题
- 程序崩溃并显示"std::out_of_range"错误
- 在C应用程序中运行C++(带有STL)函数
- 使用mongocxx驱动程序时包含头文件问题
- 如何在c++程序中找到函数的地址