【发布时间】:2019-12-02 21:08:10
【问题描述】:
我正在尝试编译一个类,在该类中我创建了一个数据成员,它的类型是另一个类“对象”,但是在运行时出现了问题,并且由于 10 个错误而失败,所有相同的错误代码和我真的一遍又一遍地解决这个问题.. 错误消息: LNK1169 一个或多个乘定义符号找到 LNK2005 一些日期和事件的代码已经在 obj 中定义 这是代码(注意:在visual studio 2019中,两个类中的每个类都分为h文件和cpp文件,不像下面显示的那样)
#pragma once
#include<iostream>
using namespace std;
class date
{
int day;
int month;
int year;
public:
date();
void readData();
~date();
};
#include"date.h"
date::date()
{
day = 0;
month = 0;
year = 0;
}
void date::readData()
{
cout << "Day: ";
cin >> day;
cout << "Month: ";
cin >> month;
cout << "Year: ";
cin >> year;
}
date::~date()
{
}
#pragma once
#include"date.cpp"
#include<string>
class Event
{
string name;
date start_date;
date end_date;
string place;
bool done;
public:
Event();
void Add();
~Event();
};
#include "Event.h"
Event::Event()
{
done = false;
}
void Event::Add()
{
cout << "Enter the event's name: ";
cin >> name;
cout << "Enter the event's start date:" << endl;
start_date.readData();
cout << "Enter the event's end date:" << endl;
end_date.readData();
cout << "Enter the event's place: ";
cin >> place;
}
Event::~Event()
{
}
【问题讨论】:
-
您的
main()函数在哪里?你的“10 个错误”是什么?您可以将它们逐字复制并粘贴到问题中吗?您为所有这些cin输入了什么?您的预期输出是什么? -
旁注:“using namespace std;” is considered bad practice,尤其是把它放在一个标题中(所以任何使用标题的东西都可以从中“受益”,而不仅仅是一个
.cpp文件明确选择加入)。当您使用date之类的常用名称时,情况会更糟,这些名称很容易存在于std中(如果不是现在,将来),当有人要求date并且编译器无法知道它们是否存在名称冲突时,情况会更糟意思是std::date或你的date类。 -
如果你不能链接,你怎么知道你有运行时错误?
-
错字。
#include "Date.h",不是#include "Date.cpp"。