一个与重载有关的继承问题
程序代码:
#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);