首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个笔试题,虚函数继承有关问题

2012-09-29 
一个笔试题,虚函数继承问题// Extends.cpp : Defines the entry point for the console application.//#in

一个笔试题,虚函数继承问题
// Extends.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
class A
{
A()
{
doSth();
}
virtual void doSth()
{
cout<<"This is A"<<endl;
}
  void doOther(public class A &a)
{
a.doSth();
}
};
class B:public A
{
B()
{
}
virtual void doSth()
{
cout<<"This is B"<<endl;
}
void doMySelf()
{
doOther(*this);
}
};

void main()
{
B b;
A *a=&b;
a->doSth();
b.doMySelf();

}
VC6.0下报错

E:\Project\VC6.0\Extends\Extends.cpp(18) : error C2059: syntax error : 'public'
E:\Project\VC6.0\Extends\Extends.cpp(40) : error C2248: 'B::B' : cannot access private member declared in class 'B'
  E:\Project\VC6.0\Extends\Extends.cpp(25) : see declaration of 'B::B'
E:\Project\VC6.0\Extends\Extends.cpp(42) : error C2248: 'doSth' : cannot access private member declared in class 'A'
  E:\Project\VC6.0\Extends\Extends.cpp(14) : see declaration of 'doSth'
E:\Project\VC6.0\Extends\Extends.cpp(43) : error C2248: 'doMySelf' : cannot access private member declared in class 'B'
  E:\Project\VC6.0\Extends\Extends.cpp(32) : see declaration of 'doMySelf'
Error executing cl.exe.

Extends.exe - 4 error(s), 0 warning(s)


[解决办法]
你这里哪有虚继承啊?
[解决办法]
class A
{
public:
A()
{
doSth();
}
virtual void doSth()
{
cout<<"This is A"<<endl;
}
void doOther(public class A &a)
{
a.doSth();
}
};
class B:public A
{
public:
B()
{
}
virtual void doSth()
{
cout<<"This is B"<<endl;
}
void doMySelf()
{
doOther(*this);
}
};

热点排行