我正在尝试编译一个类,在该类中,我创建了一个数据成员,该成员的类型是另一个类“ objects”,但是在运行时出了点问题,并且由于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()
{
}
答案 0 :(得分:2)
您的Event
标头包括:
#include"date.cpp"
其中包括date
的定义,而不仅是声明,因此包含Event.h
(或该标头的真实名称)在内的所有对象的结果对象文件,例如Event.cpp
将具有自己的date
类实现的副本,位于从date.cpp
本身编译得到的副本之上。
想必,您打算这样做:
#include "date.h"
包括声明而不将实现推入包含Event.h
的每个对象中。