对象已定义

时间:2019-12-02 21:08:10

标签: c++ class object

我正在尝试编译一个类,在该类中,我创建了一个数据成员,该成员的类型是另一个类“ 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()
{

}

1 个答案:

答案 0 :(得分:2)

您的Event标头包括:

#include"date.cpp"

其中包括date的定义,而不仅是声明,因此包含Event.h(或该标头的真实名称)在内的所有对象的结果对象文件,例如Event.cpp将具有自己的date类实现的副本,位于从date.cpp本身编译得到的副本之上。

想必,您打算这样做:

#include "date.h"

包括声明而不将实现推入包含Event.h的每个对象中。