[英]Declaring a template-class object: Error: no matching function for call to
当我尝试构建我的项目时,我收到错误消息“ error: no matching function for call to 'Ringbuffer<void*>::Ringbuffer()'
”。 这是不起作用的代码,我想知道为什么 C++ 甚至试图调用“ Ringbuffer()
”,因为我只想在Producer
中声明一个 object 。 Ringbuffer
的构造函数取了三个arguments。 有人有想法吗? 非常感谢!
#include "Ringbuffer.h"
class Producer{
private:
Ringbuffer<void*> rbuf;
public:
Producer();
};
Producer::Producer(){
}
为什么 C++ 甚至试图调用“Ringbuffer()”
因为rbuf
是Producer
的成员,并且当您构造Producer
时,也会构造该成员。 如果你不明确地这样做,那么rbuf
是默认构造的。
Ringbuffer的构造函数取了三个arguments。
当Ringbuffer
没有默认构造函数(一个可以不带参数调用)而只有一个有 3 个 arguments 时,则不能默认构造。
有人有想法吗?
调用构造函数:
Producer::Producer() : rdbuf(foo,bar,baz) {
}
其中foo
、 bar
和baz
是您要用于构造Ringbuffer
的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.