C ++:没有用于调用'

时间:2015-12-05 13:21:41

标签: c++ qt function matching

我在编译器中出错但我不确定为什么它会给我它。我尝试了很多东西,我无法弄清楚可能导致问题的原因。 将progressBar加载到energyBar中似乎存在问题。 当加载除progressBar之外的其他参数时,它编译时没有错误。

以下是代码:

MaindWindow2.cpp

 #include EnergyBar.h
    ...//Other code
  void MainWindow2::drawEnergyBar()
{
    ui->setupUi(this);
    progressBar = new QProgressBar(ui->statusBar);
    progressBar->setAlignment(Qt::AlignRight);
    progressBar->setMaximumSize(180, 19);
    ui->statusBar->addWidget(progressBar);
    progressBar->setValue(100); //Max is 100%.
    energyBar = new EnergyBar(progressBar);

}

Energybar.cpp

#include "energybar.h"    


    EnergyBar::EnergyBar(QProgressBar progressBar){     

    }
//Some methods

Energybar.h

#include "energybar.h"
#include "view.h"
#include "model.h"



EnergyBar::EnergyBar(QProgressBar progressBar){    

}
void EnergyBar::calculateTileEnergy()
{

}

我在EnergyBar的构造函数中有一些其他参数,但我把它们排除了,因为它们不会导致问题。 如果省略“progressBar”,则创建新对象energyBar没有问题。 但是添加它会导致错误:

/home/jb/Documents/nodePtr/mainwindow2.cpp:66: error: no matching function for call to 'EnergyBar::EnergyBar(QProgressBar*&)'
     energyBar = new EnergyBar(progressBar);
                                          ^

1 个答案:

答案 0 :(得分:2)

progressBar = new QProgressBar(ui->statusBar);

表示您正在使用QProgressBar的指针

EnergyBar::EnergyBar(QProgressBar progressBar)

意味着你不期待一个指针。 使用

EnergyBar::EnergyBar(QProgressBar * progressBar)