クラス B が DoSomething(Class Y) 関数にアクセスするのを止め、 DoSomething(Class X) にのみアクセスしようとしています。どうすればC++でそれを行うことができますか?.
Class A {
public:
void DoSomething(Class Y);
}
Class B: public A {
public:
void DoSomething(Class X);
}
クラス B が DoSomething(Class Y) 関数にアクセスするのを止め、 DoSomething(Class X) にのみアクセスしようとしています。どうすればC++でそれを行うことができますか?.
Class A {
public:
void DoSomething(Class Y);
}
Class B: public A {
public:
void DoSomething(Class X);
}
あなたは作ることができますA::DoSomething(Class Y)
private
、そしてそれがあなたがそれについて行くことができる唯一の方法です.
また、ここでオーバーライドするのではなく、隠します。それでも、class
(はい、大文字ではなく小文字です) B でも、 を呼び出すことができますA::DoSomething()
。private
アクセスを拒否する唯一の方法です。
クラス B が にアクセスするのを止めようとしてい
DoSomething(Class Y)
ます。C++ でそれを行うにはどうすればよいですか?
このような:
class X {};
class Y {};
class A {
public:
void DoSomething(class Y);
};
class B: public A {
public:
void DoSomething(class X);
};
int main () {
B b;
Y y;
b.DoSomething(y);
// Note that b can still access DoSomething(y) if you want it to:
b.A::DoSomething(y);
}
これにより g++ で生成されるエラー メッセージに注意してください。
g++ -ansi -pedantic -Wall -Werror b.cc -o b
b.cc: In function ‘int main()’:
b.cc:17:18: error: no matching function for call to ‘B::DoSomething(Y&)’
b.cc:17:18: note: candidate is:
b.cc:11:14: note: void B::DoSomething(X)
b.cc:11:14: note: no known conversion for argument 1 from ‘Y’ to ‘X’