我正在尝试为 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。
最佳答案
您可以通过使用
它们的集体名称来继承基类的构造函数:
namespace Poco {
struct ThreadPool{
ThreadPool(int);
ThreadPool(int,int);
};
}
namespace myNamespace{
class ThreadPool : Poco::ThreadPool{
using Poco::ThreadPool::ThreadPool; // inherits constructors
};
}
关于c++ - 从基类继承函数声明中参数的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45455600/