我正在嘗試爲我使用的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
);
我怎樣才能讓我的包裝類的工作只有兩個參數,如基類呢?
我沒有使用C++ 11。
方法是繼承_but_構造函數是一種特殊情況。請看看[SO:繼承構造函數](https://stackoverflow.com/a/434784/7478597)。由於這與Poco無關,因此它看起來像是重複的。 – Scheff
你不需要公共繼承嗎? – danielspaniol
[繼承構造函數]可能的重複(https://stackoverflow.com/questions/347358/inheriting-constructors) – Scheff