簡體   English   中英

需要幫助無法弄清楚為什么我的頭文件函數聲明不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM