求助:C 中在派生类中反问基类的相关问题?

[复制链接]
查看11 | 回复6 | 2011-7-2 11:18:55 | 显示全部楼层 |阅读模式
#include\"CSquarecpp.h\"
voidmain()
{//派生类CSquare公有继承基类CRantangle
//PrintOut()是基类CRectangle的公有成员函数
        CSquarecs0;        //派生类CSquare对象cs0       
        cs0.PrintOut();        //直接调用派生类从基类吸收的公有成员函数
//此处链接是出错
        cs0.PrintOut();
        cs0.CRectangle::PrintOut();
}
我在主函数中直接用派生类对象调用(基类CRectangle的公有成员函数)也就是派生类从基类继承而来的CRectangle的公有成员部分,按C语法,这样访问是可以的,程序编译能通过,但是链接是就出错了:如下:
main.obj:errorLNK2001:unresolvedexternalsymbol\"public:void__thiscallCRectangle::PrintOut(void)const\"(?PrintOut@CRectangle@@QBEXXZ)
Debug/main.exe:fatalerrorLNK1120:1unresolvedexternals
也不知道为什么会链接不上,C刚入门,许多东西还不知道,还请知道的大牛给以回答帮助,谢谢!
补充:(程序中的类定义,类实现是分开装在两个.h文件中的,主函数数又放入一个.cpp文件中,我是通过文件包含来使用它的)
回复

使用道具 举报

千问 | 2011-7-2 11:18:55 | 显示全部楼层
全部包含进去,那又出现类重定义了,要怎么办啊~
回复

使用道具 举报

千问 | 2011-7-2 11:18:55 | 显示全部楼层
那就是你包含的不正确呗!
初学者,包含头文件以及编译哪几个文件往往搞不清楚。
你的语言平台是什么?vc6还是vs2003还是vs2005?
回复

使用道具 举报

千问 | 2011-7-2 11:18:55 | 显示全部楼层
VC6.0
回复

使用道具 举报

千问 | 2011-7-2 11:18:55 | 显示全部楼层
//---------CRectangle.h----------------
classCRectangle
{
public:
voidPrintOut();
}

//------------CRectangle.cpp-----------
voidCRectangle::PrintOut()
{
printf(\"printsomething...\\r\\n\");
}

//--------------CSquare.h------------
#include\"CRectangle.h\"
classCSquare:publicCRectangle
{
voidmyFunction();
}

//----------------CSquare.cpp------
#include\"CSquare.h\"
voidCSquare::myFunction()
{
printf(\"hellow...\\r\\n\");
}

//-----------myFirstProject.cpp------
#include\"CSquare.h\"
voidmain()
{
CSquarecs0;
cs0.PrintOut();
}

以上一共是5个文件,3个cpp文件,2个h文件
你的工程里面编译的时候需要包含3个cpp文件。而不是说在h文件或者cpp里面再去包含。
以上是示例代码,
回复

使用道具 举报

千问 | 2011-7-2 11:18:55 | 显示全部楼层
PrintOut()实现过了~
回复

使用道具 举报

千问 | 2011-7-2 11:18:55 | 显示全部楼层
要么就是你实现的函数,和声明的不一致
不行就把那代码帖上来吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行