我有2个类TreeManager和TreeProducerBase。我从TreeManagerconstructor将TTree(这是一个用于创建树的类)的对象传递给TreeProducerBase中的函数时遇到错误。
注意:我将树定义为

TTree *tree_

函数调用:
tpb.initialize(&tree_);

在此,tpb是TreeproducerBase类的对象。

这是被调用的函数。
void initialize(TTree &tree_)

它显示错误如下:
error: no matching function for call to 'TreeProducerBase::initialize(TTree*&)'

我在哪里做错了?

最佳答案

您正在尝试将指向TTree的指针传递给期望引用TTree的函数。尝试像这样重新声明

void initialize(TTree* &tree_);

发票看起来像
tpb.initialize(tree_);

然后您可以通过简单的赋值来初始化外部指针:
void initialize(TTree* &tree_) {
    tree_ = new TTree(); // or smth else
}

关于c++ - 没有匹配的函数来调用C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38477598/

10-12 00:45