我在我的一个编程模块上做了一个分配而且有点卡住了。
每当我创建一个certian类的对象时,我都会继续使用Error no Matching Constructors进行初始化。
可能还有其他一些错误,我仍然忙于设置所有内容。我的课程设置正确吗?
SavingsAccount.h
#ifndef SAVINGSACCOUNT_H
#define SAVINGSACCOUNT_H
#include "transaction.h"
#include <QString>
#include <QList>
#include <QDate>
class SavingsAccount
{
public:
SavingsAccount (QString name, QString num);
~SavingsAccount();
QList<Transaction> addTransaction(Transaction T);
double totalTransactionCost();
QString frequentTransactionType();
QList<Transaction> transactionsOnAdate(QDate date);
QString toString();
private:
QString m_CustomerName;
QString m_AccountNumber;
QList<Transaction> m_TransactionList;
};
#endif // SAVINGSACCOUNT_H
SavingsAccount.cpp
#include "savingsaccount.h"
#include <QString>
#include <QList>
#include <iostream>
using namespace std;
SavingsAccount::SavingsAccount(QString name, QString num){
m_CustomerName = name;
m_AccountNumber = num;
}
SavingsAccount::~SavingsAccount(){
}
QList<Transaction> SavingsAccount::addTransaction(Transaction t){
}
QString SavingsAccount::frequentTransactionType(){
}
QString SavingsAccount::toString(){
}
double SavingsAccount::totalTransactionCost(){
}
QList<Transaction> SavingsAccount::transactionsOnAdate(QDate date){
}
Main.cpp的
#include <QCoreApplication>
#include "transaction.h"
#include "savingsaccount.h"
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
string accName;
int accNum;
cout << "Enter Account Name: "<< endl;
cin >> accName;
cout<<"Enter Account Number: " <<endl;
cin >> accNum;
SavingsAccount accholder1(accName,accNum);
return a.exec();
}
非常感谢。我真的很喜欢这个主题,所以不要笑; - )
答案 0 :(得分:1)
您正在使用std::string
创建对象,但您的构造函数需要QString
。截至Qt 4
(不知道Qt 5
是否允许此操作),没有从std::string
到QString
的隐式转换。
将指针传递给以null结尾的char数组:
SavingsAccount accholder1(accName.c_str(), accNum);
或直接使用QString
来阅读帐户名称。
编辑:我刚刚注意到你的构造函数需要2 QStrings
,但你传递一个int作为第二个参数。您可以使用静态函数QString
将数字转换为QString::number
。
答案 1 :(得分:0)
问题是你正在创建一个对象而没有将正确的参数传递给构造函数。
例如,如果你有一个带有像这样的构造函数的类SomeClass
SomaClass(Qstring s1)
你不能像这样创建一个SomeClass;
SomaClass t;
你必须改为创建:
SomeClasst t("text");