搜索
g++ - c++ 条件编译报错。 ‘Mytime’ has not been declared。
怪我咯
怪我咯 2017-04-17 12:04:03
[C++讨论组]

在一个类定义的头文件中使用 #ifdef,#define #endif。之后会报错, XXXX has not been declared。为什么会这样?
使用条件编译:
mytime.h:

include<iostream>

using namespace std;
#ifdef MYTIME_H
#define MYTIME_H
class Mytime{

 private:
     int hou;
     int min;
 public: 
     Mytime(int mm_hou = 1,int mm_min = 10){
         hou = mm_hou;
         min = mm_min;
     };
     ~Mytime()
     {
         cout<<"destructor ~Mytime()"<<endl;
     };
     void show();
     friend Mytime * operator +(Mytime &t,Mytime &t1);

};
#endif

mtiem.cpp:

include<iostream>

include "mytime.h"

using namespace std;
void Mytime::show()
{

cout<<hou<<"hours "<<min<<"minutes"<<endl;

};
Mytime * operator +(Mytime &t,Mytime &t1)
{

return new Mytime(t.hou+t1.hou,t.min+t1.min);

};
int main()
{

Mytime t;
t.show();
Mytime t2 = Mytime(10,20);
Mytime *t3 = t+t2;
t3->show();

}
报错:

‘mytime’ does not name a type
 ‘Mytime’ has not been declared

去掉条件编译。就正确了。求指点。

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
巴扎黑

ifndef是不是拼错导致编译错误

阿神
#ifndef MYTIME_H
#define MYTIME_H
...
#endif
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号