我试图从基类继承构造函数,但我收到错误:C2876:' Poco :: ThreadPool' :并非所有重载都可以访问。
namespace myNamespace{
class ThreadPool : public Poco::ThreadPool{
using Poco::ThreadPool::ThreadPool; // inherits constructors
};
}
Poco :: ThreadPool有3个构造函数,2个公共构造函数都有默认初始化参数,1个私有构造函数。
我怎样才能继承公共构造函数?
我没有使用c ++ 11.
答案 0 :(得分:3)
如果您不使用C ++ 11或更高版本,则不能使用单个using声明继承所有基本构造函数。
C ++ 11之前的旧方法是在派生类中为我们想要公开的基础中的每个c'tor创建一个相应的c'tor。例如:
struct foo {
int _i;
foo(int i = 0) : _i(i) {}
};
struct bar : private foo {
bar() : foo() {} // Use the default argument defined in foo
bar(int i) : foo(i) {} // Use a user supplied argument
};
如果你仍然想要一个带默认参数的c'tor,你也可以这样做:
struct baz : private foo {
baz(int i = 2) : foo(i) {} // We can even change what the default argument is
};