[英]Need help can't figure out why my header file function declarations won't work
無法弄清楚代碼。 我如何使我的標題中的 PiggyBank& 與我的 cpp 文件中的添加函數一起使用?
給我錯誤:
錯誤 6 錯誤 C2040: 'PiggyBank::addDimes' : 'void (int)' 與 'PiggyBank &(int)' 的間接級別不同 h:\\cosc1030\\homework09\\homework09\\piggybank.cpp 36 1 Homework09
#ifndef PIGGYBANK_H
#define PIGGYBANK_H
#include <iostream>
using std::cout;
using std::endl;
class PiggyBank
{
public:
PiggyBank(int pennies, int nickels, int dimes, int quarters);
// Return the number of coins in the bank
int getPenniesCount() const;
int getNickelsCount() const;
int getDimesCount() const;
int getQuartersCount() const;
// Add coins to the bank
PiggyBank& addPennies(int p);
PiggyBank& addNickels(int n);
PiggyBank& addDimes(int d);
PiggyBank& addQuarters(int q);
// Withdraw coins from the bank, return number withdrawn
int withdrawPennies(int p);
int withdrawNickels(int n);
int withdrawDimes(int d);
int withdrawQuarters(int q);
void displayBalance() const;
void breakTheBank(); // Display the balance then cash out (all counts zeroed).
private:
int pennies;
int nickels;
int dimes;
int quarters;
};
#endif
#include "PiggyBank.h"
PiggyBank::PiggyBank(int pennies, int nickels, int dimes, int quarters)
{
addPennies(pennies);
addNickels(nickels);
addDimes(dimes);
addQuarters(quarters);
}
int PiggyBank::getPenniesCount() const
{
return pennies;
}
int PiggyBank::getNickelsCount() const
{
return nickels;
}
int PiggyBank::getDimesCount() const
{
return dimes;
}
int PiggyBank::getQuartersCount() const
{
return quarters;
}
void PiggyBank::addPennies(int p)
{
pennies = (p >= 0) ? p : 0;
}
void PiggyBank::addNickels(int n)
{
nickels = (n >= 0) ? n : 0;
}
void PiggyBank::addDimes(int d)
{
dimes = (d >= 0) ? d : 0;
}
void PiggyBank::addQuarters(int q)
{
quarters = (q >= 0) ? q : 0;
}
帶有PiggyBank& addDimes(int d);
的頭部被提供,
因此您需要將實現中的void
更改為PiggyBank&
。
應該返回的很可能是調用addDimes
的同一個對象,
IE。 this
。 this
是一個指針,所以return *this;
.
也許你想知道這有什么好處:現在你可以寫這樣的東西
functionWhichTakesaPiggyBank(myPiggyBank.addDimes(1)); //one line
myPiggyBank.addDimes(1).addDimes(1).addDimes(1); //chaining
等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.