[問題] 請問private繼承 和同名成員 和using
#include <iostream>
using namespace std;
class Box{
public:
int d;
Box(int va, int vb):a(va),b(vb){d=0;}
void Show(){
cout<<"a="<<a<<" "<<"b="<<b<<endl;
}
protected:
int a;
int b;
};
class Caton:private Box{
public:
int a;
int c;
using Box::Show;
using Box::d;
//using Box::a;
Caton(int va, int vb, int vc):Box(va, vb),c(vc){a=0;}
void Showc(){
cout<<"a="<<Box::a<<endl;
}
};
int main(){
Caton c(1, 2, 3);
c.Show();
c.Showc();
cout<<"d="<<c.d<<endl;
return 0;
}
以上的程式碼 在我沒將 using Box::a; 註解時會出錯
because of local member ‘int Caton::a’ with same name
這應該是scope的問題
不過 using就是在以 private繼承時
可以將base class的 public/protected member提升到public來繼承的方法
請問 如果一定要用這種提升權限 又遇到同名的問題的時候
除了改寫原base class 或是derived class不要讓它發生同名以外
想要把base class的a 和d一樣 可以當成public來用
還有什麼可以用的寫法嗎? 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.162.49.2
※ 編輯: AnonymousX 來自: 1.162.49.2 (08/26 00:30)
※ 編輯: AnonymousX 來自: 1.162.49.2 (08/26 00:30)
→
08/26 20:12, , 1F
08/26 20:12, 1F
→
08/26 20:48, , 2F
08/26 20:48, 2F
→
08/26 20:50, , 3F
08/26 20:50, 3F
→
08/26 22:03, , 4F
08/26 22:03, 4F
→
08/26 22:19, , 5F
08/26 22:19, 5F
→
08/26 22:20, , 6F
08/26 22:20, 6F
→
08/27 02:44, , 7F
08/27 02:44, 7F
→
08/27 02:44, , 8F
08/27 02:44, 8F
→
08/27 13:21, , 9F
08/27 13:21, 9F
→
08/27 13:22, , 10F
08/27 13:22, 10F
→
08/27 13:57, , 11F
08/27 13:57, 11F
→
08/27 22:14, , 12F
08/27 22:14, 12F
→
08/27 22:14, , 13F
08/27 22:14, 13F
→
08/27 22:49, , 14F
08/27 22:49, 14F
→
08/27 22:49, , 15F
08/27 22:49, 15F
→
08/27 22:55, , 16F
08/27 22:55, 16F
→
08/27 22:55, , 17F
08/27 22:55, 17F
→
08/27 22:57, , 18F
08/27 22:57, 18F
→
08/27 22:58, , 19F
08/27 22:58, 19F
→
08/28 10:34, , 20F
08/28 10:34, 20F
→
08/28 21:33, , 21F
08/28 21:33, 21F