2 zoudick97 zoudick97 于 2016.01.23 20:40 提问

LNK2005 的问题求助!

惯例上代码:
第一个是.h文件

 #include<iostream>
#include<iomanip>
using namespace std;

#ifndef   MY_H_FILE       //如果没有定义这个宏  
#define   MY_H_FILE       //定义这个宏  
class data_X
{
public:
    data_X(int, int);
    void setX(int);
    void setData(int);
    int getData();
private:
    int data;
    int X;
};

data_X::data_X(int x, int Data = 0)
{
    setX(x);
    setData(Data);
}

inline void data_X::setX(int x)
{
    if (x == 0)
    {
        cout << "0 is invalid." << endl;
    }
    else
    {
        X = x;
    }
}

inline void data_X::setData(int Data)
{
    if (Data >= 0 && Data <= X)
    {
        data = Data;
    }
    else
    {
        cout << "data is invalid." << endl;
    }
}

inline int data_X::getData()
{
    return data;
}

class Hour :public data_X
{
public:
    Hour(int iHour = 0) :data_X(12, iHour)
    {}
};

class Minute :public data_X
{
public:
    Minute(int iMinute = 0) :data_X(60, iMinute)
    {}
};

class Second :public data_X
{
public:
    Second(int iSecond = 0) :data_X(60, iSecond)
    {}
};

class Time
{
public:
    Time(int, int, int);
    void display();
private:
    Hour hour;
    Minute minute;
    Second second;
};

Time::Time(int iHour, int iMinute, int iSecond)
{
    hour = Hour(iHour);
    minute = Minute(iMinute);
    second = Second(iSecond);
}

void Time::display()
{
    cout << setfill('0') << setw(2) << hour.getData() << ":" << minute.getData() << ":" << second.getData() << endl;
}
#endif 

还有一个cpp文件:

 #include"TimeAndDate.h"

int main()
{
    Time currentTime(20, 16, 13);
    currentTime.display();
}

5个回答

caozhy
caozhy   Ds   Rxr 2016.01.23 20:57
已采纳

图片说明

如果你程序只有这两个文件的话,按理说没有错。我亲自测试了

建议你把bin obj删除了重新编译一下看看。

caozhy
caozhy 回复zoudick97: 因为有时候obj的目标程序和你的源代码不一致,但是因为某些原因(时间修改过或者什么情况),编译器增量编译的时候没有重新编译。导致链接的时候出错。
接近 2 年之前 回复
zoudick97
zoudick97 回复caozhy: 已采纳,但是这是为什么呢
接近 2 年之前 回复
caozhy
caozhy 回复zoudick97: 如果问题解决,麻烦点下我回答右边的采纳,谢谢
接近 2 年之前 回复
zoudick97
zoudick97 我改了个选项,见楼下,然后好了。
接近 2 年之前 回复
zoudick97
zoudick97   2016.01.23 20:43

图片说明

caozhy
caozhy   Ds   Rxr 2016.01.23 20:54

首先,
#ifndef MY_H_FILE //如果没有定义这个宏

#define MY_H_FILE //定义这个宏
这是不行的,你光定义了宏并不能阻止重复包含

zoudick97
zoudick97   2016.01.23 22:14

图片说明

91program
91program   Ds   Rxr 2016.01.23 20:55

一般来说,类的定义放在 h 中,类的实现放在 cpp 中。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!