は、以下のコードはエラーを生成します。C++抽象クラス・パラメータのエラーの回避策
#include <iostream>
using namespace std;
class A
{
public:
virtual void print() = 0;
};
void test(A x) // ERROR: Abstract class cannot be a parameter type
{
cout << "Hello" << endl;
}
は、このエラーの解決策/回避策は
virtual void print() = { }
で
virtual void print() = 0;
を交換するよりも良い/他あり
EDIT:基本クラスAを拡張/実装する任意のクラスをパラメータとして渡すことができるようにするには、ポリモーフA* x = new B() ; test(x);
)
乾杯もちろん
定義によるAbstarctクラスは、すべてそれ自身でインスタンス化するべきではありません。派生クラスによってメソッドをオーバーライドする必要があります。ただ好奇心が強い、これを行うことで何を達成しようとしていますか? – Mahesh
私はA x = new B()のようなことをして、Aを拡張/実装するクラスを渡したいと思います。 – Cemre
解決策を見つける前に、問題を理解する必要があります。抽象クラスを「値による」パラメータとして渡すという考え方はまったく意味がありません。あなたは何をしようとしているのですか? – AnT