![]() |
#2
zhuxiaoneng2013-04-17 15:56
|

#include <iostream>
using namespace std;
class base
{
public:
void swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}
};
class de: public base
{
void swap(double& a, double& b)
{
double tmp = a ;
a = b;
b = tmp;
}
using base::swap(int&, int&);
};
int main()
{
int a = 2;
int b = 3;
de *p = new de();
p->swap(a, b);
return 0;
}
程序很简单,就一个swap,我想,如何让基类中的swap(int&, int&)能够在派生类中被用上。
以上代码编译的错误信息为:

d.cpp:23:21: 错误:expected ‘;’ before ‘(’ token
using base::swap(int&, int&);
^
d.cpp:23:22: 错误:expected unqualified-id before ‘int’
using base::swap(int&, int&);
^
d.cpp:23:22: 错误:expected ‘)’ before ‘int’
d.cpp: 在函数‘int main()’中:
d.cpp:7:10: 错误:‘void base::swap(int&, int&)’无法访问
void swap(int& a, int& b)
^
d.cpp:31:17: 错误:在此上下文中
p->swap(a, b);