下面代码是一个练习"多重继承调用的程序"SDK#include "stdafx.h"
#include <iostream.h>class A //定义类A
{
private:
int x;
public:
void setx(int tx){x=tx;};
void showx(void){cout<<"x="<<x<<"\n";);
};class B //定义类B
{
private:
int y;
public:
void sety(int ty){y=ty;};
void showy(void){cout<<"y="<<y<<"\n";};
};class C: public A,private B //定义类C基于类A和类B
{
private:
int z;
public:
void setz(int tz){z=tz;};
void showz(void){cout<<"z="<<z<<"\n";};
//私有继承的派生类的成员函数可以调用基类成员国函数
void setbasey(int ty){sety(ty);};
void showbasey(void){showy();};
};
int main(int argc, char* argv[])
{
C cc;
cc.setx(10); //调用类A的公有函数
cc.setbasey(15);
cc.setz(25);cc.showx();
cc.showbasey();
cc.showz(); return 0;
}出错如下:
Compiling...
SdkTest8.cpp
C:\Documents and Settings\Administrator\My Documents\TEXT\SdkTest8\SdkTest8.cpp(25) : error C2504: 'A' : base class undefined
C:\Documents and Settings\Administrator\My Documents\TEXT\SdkTest8\SdkTest8.cpp(51) : fatal error C1004: unexpected end of file found
Error executing cl.exe.SdkTest8.exe - 2 error(s), 0 warning(s)敬请指出改正~~~~~~~~~~~~~~~~~~~~~~~
#include <iostream.h>class A //定义类A
{
private:
int x;
public:
void setx(int tx){x=tx;};
void showx(void){cout<<"x="<<x<<"\n";);
};class B //定义类B
{
private:
int y;
public:
void sety(int ty){y=ty;};
void showy(void){cout<<"y="<<y<<"\n";};
};class C: public A,private B //定义类C基于类A和类B
{
private:
int z;
public:
void setz(int tz){z=tz;};
void showz(void){cout<<"z="<<z<<"\n";};
//私有继承的派生类的成员函数可以调用基类成员国函数
void setbasey(int ty){sety(ty);};
void showbasey(void){showy();};
};
int main(int argc, char* argv[])
{
C cc;
cc.setx(10); //调用类A的公有函数
cc.setbasey(15);
cc.setz(25);cc.showx();
cc.showbasey();
cc.showz(); return 0;
}出错如下:
Compiling...
SdkTest8.cpp
C:\Documents and Settings\Administrator\My Documents\TEXT\SdkTest8\SdkTest8.cpp(25) : error C2504: 'A' : base class undefined
C:\Documents and Settings\Administrator\My Documents\TEXT\SdkTest8\SdkTest8.cpp(51) : fatal error C1004: unexpected end of file found
Error executing cl.exe.SdkTest8.exe - 2 error(s), 0 warning(s)敬请指出改正~~~~~~~~~~~~~~~~~~~~~~~
下面是我用VC新建Project/Win32 Application/下的一个8.5文件夹名,An empty project
后再添加一个C++ source File,加入代码如下:#include"iostream.h"
#define PI 3.1415926
class CPoint //定义一个点类
{
public:
CPoint(int a,int b) //只有一个有参构造函数
{x=a;
y=b;
cout<<"Construct a point object."<<endl;
}
~CPoint() //点类的析构函数
{
cout<<"Deconstruct of a point object is called."<<endl;
}
void SetPointPosition(int a,int b) //设置点位置的函数定义
{
x=a;y=b;
}
void OutPoint(); //声明点输出函数
private:
int x,y; //存放点位置的数据成员
};
void CPoint::OutPoint() //只有一个有参构造函数
{
cout<<"("<<x<<","<<y<<")";
}
class CCircle //定义一个圆类
{
public:
double r; //存放圆半径
CCircle() //声明圆对象的无参构造函数
{
s=r=0;
cout<<"Construct a circle object with 0 value."<<endl;
}
CCircle(double a) //声明对象的有参构造函数
{
r=a;s=0;
cout<<"Construct a circle object with a parameter."<<endl;
}
void SetValue(double a); //设置圆半径的函数声明
double CalculateArea(); //计算圆面积的函数声明
void OutCircleArea(); //输出圆面积的函数声明
~CCircle()
{
cout<<"Deconstruct of a circle object is called"<<endl;
}
protected:
double s; //存放圆的面积
};
double CCircle::CalculateArea()
{
s=r*r*PI;
return(s);
}
void CCircle::OutCircleArea()
{
cout<<"Circle Area="<<s<<endl;
}
void CCircle::SetValue(double a)
{
r=a;s=0;
}
class CCircleInReferenceFrame:public CCircle //从基类CCircle派生创建新类
{
public:
CCircleInReferenceFrame():pt(0,0) //派生类的无参构造函数
{
cout<<"Construct a circle object in reference frame with 0 value."<<endl;
}
//下面是派生类的有参构造函数,注意对象成员和基类的构造函数调用
CCircleInReferenceFrame(double a,int x0,int y0):CCircle(a),pt(x0,y0)
{
cout<<"Construct a circle object in reference frame with parameters."<<endl;
}
~CCircleInReferenceFrame() //派生类的析构函数
{
cout<<"Deconstruct of a circle object in reference frame is called"<<endl;
}
void SetCirclePosition(int x0,int y0); //设置圆坐标系统中的位置
void OutCircleInfo();
protected:
CPoint pt; //在平面坐标系统中,圆的中心的坐标点
};
void CCircleInReferenceFrame::SetCirclePosition(int x0,int y0)
{
pt.SetPointPosition(x0,y0);
}
void CCircleInReferenceFrame::OutCircleInfo()
{
cout<<"This Circle Object is located in";
pt.OutPoint();
cout<<".\n";
CalculateArea();
OutCircleArea();
}
//下面定义主函数,在主函数中,声明平面坐标系统中的圆对象并加以应用
void main()
{
CCircleInReferenceFrame obj1(10.0,100,45),obj2;
obj1.OutCircleInfo(); obj2.SetValue(2);
obj2.SetCirclePosition(88,66);
obj2.OutCircleInfo();
}运行时出错如下:
--------------------Configuration: 8_5 - Win32 Debug--------------------
Linking...
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/8_5.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.8_5.exe - 2 error(s), 0 warning(s)
请问怎么解决