1

次のように、インターフェイスであるはずの抽象クラスがあります。

  class IDataSource
    {
    public:
        virtual double getMeThatDouble() = 0;
    }

そしていくつかの実装のような

 class IDataSourceStreamer
    {
    public:
        double getMeThatDouble()
          {
            //implementation
          }
    }

ポイントは、他のクラスのコンストラクターの初期パラメーターとして使用したいということです

class DataNeeder
{
  public:
       explicit DataNeeder(IDataSource);
}

そしてここで問題が発生します- "parameter of abstract class type is not allowed"

特定の理由で禁止されていることを理解しています-抽象クラスを単独で使用することは不可能です。それで、私は何をすべきですか?のような方法ですか

IDataSource.FeedThat(DataNeeder)

唯一のオプション?ちょっと醜い。

4

1 に答える 1