c++ 问啥报错??请指点

来源:百度知道 编辑:UC知道 时间:2024/07/05 20:20:11
问什么我这个程序会报错:'A':class type redefinition?
应怎么改?谢谢
头文件A.h
#include<iostream>
using namespace std;
class A
{
int a;
double b;
public:A(int a1=0,double b1=0.0):a(a1),b(b1){}
virtual void display()const;};
头文件B.h
#include"A.h"
enum way{foot,car,other};
class B:public A
{
public:B(int a2,double b2):A(a2,b2){}
void display()const;
};
AB.cpp文件:
#include"A.h"
#include"B.h"
void A::display()const
{
cout<<"class A: "<<a<<endl;
} void B::display()const
{
cout<<"class B: \n";
}
main.cpp
#include"B.h"
#include"A.h"
int main()
{
void test(A&);
A a(3,8.8);
B b(2,6.6);
test(a);
test(b);
}
void test(A& t)
{
t.display();
}

'A':class type redefinition =>
头文件中类嵌套定义

解决办法:
在A.h和B.h首行添加宏开关 #progma once

开关含义:
告诉编译器,无论头文件被包含几次,头文件中的类都只定义一次。