派生クラスオブジェクトから同じ署名を持つベースクラスFNにアクセス
-
18-09-2019 - |
質問
派生クラスオブジェクトを使用して派生クラス関数と同じ署名を持つ基本クラス関数にアクセスすることは可能ですか?これが私が以下で述べていることのサンプルです。
class base1 {
public:
void test()
{cout<<"base1"<<endl;};
};
class der1 : public base1 {
public:
void test()
{cout<<"der1"<<endl;};
};
int main() {
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}
解決
継承されたものと競合するため、メソッド名を完全に修飾する必要があります。
obj.base1 :: test()を使用する
他のヒント
仮想キーワードを提供しなかった場合、派生クラスのメソッドをオーバーライドすることはできません。
class base1
{
public:
void test()
{
cout << "base1" << endl;
};
};
class der1 : public base1
{
public:
void test()
{
cout << "der1" << endl;
};
};
int main()
{
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}
したがって、上記のコードが間違っています。あなたは与えなければなりません:
virtual void test();
基本クラスで
You can use this:
((base)obj).test();
所属していません StackOverflow