c++中两个头文件定义同名类的解决办法

今天考虑了一个问题,如果两个头文件比如time.h times.h里面都定义了一个time的类,要怎么解决?vs编译器只对cpp文件进行编译,在编译阶段,这两个头文件的实现文件都不会出错,如果不在主函数中用到time这个类,程序也不会有问题。但是如果用到,那就是disaster!!!,如果你不得不在两个头文件中定义同名类,下面是我自己思考出来的最简单的解决方式---》》用不同的作用域包含

#ifndef TIME_H
#define TIME_H
namespace time1
{
    class Time
    {
    public:
        Time(int hour, int minute, int second);
        Time();
        void tick();
        void show();
    private:
        int hour;
        int minute;
        int second;
    };
}

#endif
#include "Time.h"
#include <iostream>
#include <iomanip>

using namespace std;
time1::Time::Time(int hour, int minute, int second)   //必须第一个是作用域
{
    this->minute = minute;
    this->hour = hour;
    this->second = second;
}

time1::Time::Time()  
{
    this->minute = 0;
    this->hour = 0;
    this->second = 0;
}

void time1::Time::tick()
{
    ++second;
}

void time1::Time::show()
{
    cout << setw(2) << setfill('0') << hour << "" << setw(2) << minute << "" << setw(2) << second << "" << endl;
}
#ifndef TIMES_H
#define TIMES_H
namespace time2
{
    class Time
    {
    public:
    protected:
    private:
    };
}


#endif

这里没写我的times.h的cpp文件为空,实现与否都一个样

主函数,这样可以顺利运行处结果,如果不用作用域包含,则会出现重复定义的后果

#include "Times.h"
#include "Time.h"
int main()
{
    time1::Time  t2(16,44,10);
    time1::Time  t1;
    t1.show();
    t1.tick();
    t1.show();
    t2.show();
    return 0;
}
原文地址:https://www.cnblogs.com/yican/p/3918320.html