首页 > 解决方案 > 声明模板类对象:错误:没有匹配的函数调用

问题描述

当我尝试构建我的项目时,我收到错误消息“ 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++

解决方案


为什么 C++ 甚至试图调用“Ringbuffer()”

因为rbuf是一个成员,Producer当你构造一个成员时Producer,该成员也会被构造。如果您不明确地执行此操作,则rbuf默认构造为隐式。

Ringbuffer 的构造函数接受三个参数。

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

有人有想法吗?

调用构造函数:

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

}

其中foo和是您要用于构造 的bar参数。bazRingbuffer


推荐阅读