私が使用する関数Pocoのラッパークラスを記述しようとしています。ここで関数の宣言の引数のデフォルト値を基底クラスから継承する
は私のコードです:
//PocoWrapper.h
#include <stdio.h>
#include <Poco/Task.h>
#include <Poco/TaskManager.h>
#include <Poco/ThreadPool.h>
namespace myNamespace{
class ThreadPool : Poco::ThreadPool{};
}
私は別のスクリプトでPocoWrapper.hが含まれている場合今、私が使用することができるはずです。
myThreadPool = new myNamespace::ThreadPool(1,4);
しかし、これはエラーを与える:
//error: C2661: 'myNamespace::ThreadPool::ThreadPool' : no overloaded function takes 2 arguments
ただし、私が使用した場合:
myThreadPool = new Poco::ThreadPool(1,4);
コンパイルが正常です。したがって、Poco :: ThreadPoolクラスの関数のデフォルト値を継承しないという問題があります。
ThreadPoolコンストラクタにはデフォルト値があるため、2つの引数でしか使用できません。 documentationから:基底クラスが行うよう
ThreadPool(
int minCapacity = 2,
int maxCapacity = 16,
int idleTime = 60,
int stackSize = 0
);
がどのように私は、2つだけ引数を持つ私のラッパークラスの作業を行うことができますか?
私はC++ 11を使用していません。
メソッドが継承され_but_コンストラクタは特殊なケースです。 [SO:Inheriting constructors](https://stackoverflow.com/a/434784/7478597)をご覧ください。これはPocoとは特に関係がないので、重複のように見えます。 – Scheff
パブリック継承は必要ありませんか? – danielspaniol
[継承コンストラクタ]の可能な複製(https://stackoverflow.com/questions/347358/inheriting-constructors) – Scheff