我试图制作一个简单的货币转换器,我的班级有一些问题需要进行计算。 我想在MainWindow中创建这个类的对象,以使用total变量在appi表单的小部件中显示结果。
会员功能还没有到来,但我遇到的问题是我得到了 '计算器' :mainwindow.cpp中没有适当的默认构造函数可用错误
虽然我知道这意味着什么,但我不知道如何避免(解决)这个问题,因为我需要地图上的参考来获得所需的汇率。
的.cpp
#include <QObject>
#include <QString>
#include <QDebug>
#include <ui_mainwindow.h>
class Calculator
{
public:
explicit Calculator(QMap<QString,double> ¤cy_map);
void multiply(double x, double y);
void getValues(QString strFrom, QString strTo);
private:
double total, firstCurr, secondCurr;
QMap<QString,double> ↦
};
·H
#include "calculator.h"
Calculator::Calculator(QMap<QString,double> ¤cy_map):map(currency_map)
{
total = 0;
firstCurr = 0;
secondCurr= 0;
}
void Calculator::getValues(QString strFrom, QString strTo)
{
QMapIterator<QString, double> i(map);
while(i.hasNext())
{
if(i.key() == strFrom)
firstCurr=i.value();
if(i.key() == strTo)
secondCurr = i.value();
}
}
void Calculator::multiply(double x, double y)
{
total = x * y;
}
现在我试图在我的MainWindow类中创建该类的对象:
#include <QMainWindow>
#include <ui_mainwindow.h>
#include "calculator.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QMap<QString,double> ¤cy_map, QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
parser currency_parser;
Calculator calc; // error
};
MainWindow.h
MainWindow::MainWindow(QMap<QString, double> ¤cy_map, QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->from_Combox->addItems(currency_parser.currency_list);
ui->to_Combox->addItems(currency_parser.currency_list);
}
背后的想法是我在我的主要地方有一个地图,我保存所需的所有数据并将地图传递给使用它的类。
我发布我的主要内容即使我不确定是否需要
#include "downloader.h"
#include "mainwindow.h"
#include "parser.h"
#include "calculator.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMap<QString,double> currency_map;
downloader d;
d.Do_download();
parser p;
p.read_line(currency_map);
MainWindow w(currency_map);
w.show();
return a.exec();
};
答案 0 :(得分:1)
发生错误,因为您没有在Calculator
构造函数成员初始化列表中指定类MainWindow
的相应构造函数(编译器希望使用默认构造函数):
MainWindow::MainWindow(QMap<QString, double> ¤cy_map, QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
, calc(currency_map) // <<<<<<<<<<<<<<
{
// ...
}