繁体   English   中英

声明模板类 object:错误:没有匹配的 function 用于调用

[英]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()”

因为rbufProducer的成员,并且当您构造Producer时,也会构造该成员。 如果你不明确地这样做,那么rbuf是默认构造的。

Ringbuffer的构造函数取了三个arguments。

Ringbuffer没有默认构造函数(一个可以不带参数调用)而只有一个有 3 个 arguments 时,则不能默认构造。

有人有想法吗?

调用构造函数:

Producer::Producer() : rdbuf(foo,bar,baz)  {

}

其中foobarbaz是您要用于构造Ringbuffer的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM