c++ - 从基类继承函数声明中参数的默认值

标签 c++ inheritance threadpool wrapper poco-libraries

我正在尝试为 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/

相关文章:

c++ - 初始化变量为十六进制的优点

JavaScript,意大利面条式代码和组织的问题

带有子类数组的 SwiftUI ForEach

c# - 为什么标记为在基类中隐藏实现的方法可以调用隐藏方法?

.net - .NET ThreadPool 线程在返回池时是否会重置?

c++ - 类方法 VS 类静态函数 VS 简单函数 - 性能方面?

c++ - 我的 1 行 if-else 语句不起作用

c# - 线程上下文和同步上下文

c++ - C++ 代码的意外输出。有人可以解释一下吗?

java - 自定义 future 对象