Я относительно новичок в 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;
}
Мне интересно, если при объявлении массива транзакций он заполняет все транзакции параметрами конструктора по умолчанию. Когда я "добавляю" транзакцию, я действительно перезаписываю существующую транзакцию.