c++ - 声明模板类对象:错误:没有匹配的函数调用
问题描述
当我尝试构建我的项目时,我收到错误消息“ error: no matching function for call to 'Ringbuffer<void*>::Ringbuffer()'
”。这是不起作用的代码,我想知道为什么 C++ 甚至试图调用“ Ringbuffer()
”,因为我只想在Producer
. 的构造函数Ringbuffer
接受三个参数。有人有想法吗?非常感谢!
#include "Ringbuffer.h"
class Producer{
private:
Ringbuffer<void*> rbuf;
public:
Producer();
};
Producer::Producer(){
}
解决方案
为什么 C++ 甚至试图调用“Ringbuffer()”
因为rbuf
是一个成员,Producer
当你构造一个成员时Producer
,该成员也会被构造。如果您不明确地执行此操作,则rbuf
默认构造为隐式。
Ringbuffer 的构造函数接受三个参数。
当Ringbuffer
没有默认构造函数(一个可以不带参数调用)但只有一个有3个参数时,则不能默认构造。
有人有想法吗?
调用构造函数:
Producer::Producer() : rdbuf(foo,bar,baz) {
}
其中foo
和是您要用于构造 的bar
参数。baz
Ringbuffer
推荐阅读
- javascript - 使用 Javascript 更新多个 UpdatePanel
- javascript - 如何在 reactjs 中使用 javascript 更改样式
- html - onload函数和onclick在jsp中不起作用
- javascript - Javascript 文件到 Blob
- python - 在 requests.post() python3 上接收错误
- angular - css 后加载角度数据,破坏设计
- python - return func(*args, **kwargs) ValueError: read of closed file
- jquery - MVC - ajax 调用中的历史 API
- powershell - 使用 PowerShell 进行 32 位磁盘碎片整理和病毒扫描命令
- mysql - MySQL 子查询返回超过 1 行错误