【发布时间】:2012-03-20 03:45:58
【问题描述】:
我对 C++ 比较陌生,并且在传递字符串时遇到了问题。我有 2 个构造函数用于一个类,Transaction。”一个构造函数接受一个字符串和一个 double 作为其参数,而另一个只接受一个字符串。
当我尝试通过下面的行时,我得到一个错误,说:
no matching function for call to 'Account::addTransaction(const char [14])'
或
no matching function for call to 'Account::addTransaction(const char [11], double&)'
我知道没有匹配的函数,因为我正在传递一个字符串!这是我要传递的内容:
bank.getAccount(index).addTransaction("Close Account");
bank.getAccount(index).addTransaction("Withdrawal", amount_to_withdraw);
我不知道如何更明确地表明第一个参数是一个字符串。任何建议将不胜感激。
谢谢, 亚当
根据@g24l 的请求进行更新:
这里是事务类:
#ifndef TRANSACTION_H
#define TRANSACTION_H
#include <iostream>
#include <string>
using namespace std;
class Transaction {
private:
string transType;
double transAmount;
/*
public constructors:
* 1st constructor is the default constructor
* 2nd constructor is for non-monetary transactions
* 3rd constructor is for transactions involving money
*/
public:
Transaction() {
transType = "";
}
Transaction(string tType) {
transType = tType;
}
Transaction(string tType, double tAmount) {
transType = tType;
transAmount = tAmount;
}
void setTransType(string);
void setTransAmount(double);
string getTransType() const;
double getTransAmount() const;
};
#endif /* TRANSACTION_H */
在为事务数组使用动态内存分配的 Account 类中,我有:
class Account{
private:
Depositor depositor;
int accountNum;
string accountType;
double accountBalance;
string accountStatus;
Transaction *transptr;
int numTransactions; //number of transactions
public:
// public member functions prototypes
// Constructors
/* Account default constructor:
* Input:
* Depositor() - calls the default depositor constructor
* Process:
* sets object's data members to default values
* Output:
* object's data members are set
*/
Account()
{
//cout << "Account default constructor is running" << endl;
Depositor();
accountNum = 0;
accountType = "";
accountBalance = 0.0;
accountStatus = "open";
transptr = new Transaction[100];
numTransactions = 0;
}
我想知道,当我声明事务数组时,它是否使用默认构造函数参数填充所有事务。当我“添加”一个事务时,我实际上是在重写现有事务。
【问题讨论】:
-
也许我错了,但可以将“...”解释为 char* 而不是字符串吗?
-
你的类定义在哪里???
-
您说您有两个
Transaction类的构造函数,但您没有提供它们的声明。此外,您不是直接构造Transaction对象;您正在调用一些单独的addTransaction方法。是不是也超载了?它们是如何声明的?
标签: c++ string parameters character