2015-12-09 2 views
0

L'erreur que je reçois est C3867 'Member::getMN': non-standard syntax; use '&' to create a pointer to member'. Même erreur pour getID, nBks, cost et tcost.C++ Création d'une librairie, erreur de syntaxe

Demander le nom de famille et le numéro d'identification des clients, puis le nombre de livres qu'ils désirent et demander le coût de ce livre. Doit montrer toutes les informations. Je ne sais pas où mon erreur est vraiment.

#ifndef MEMBER_H 
#define MEMBER_H 
#include <string> 
#include <iostream> 

using namespace std; 

// define the class members and member function prototypes here 
class Member 
{ 
private: 
    string MemberName;//customer name 
    string MemberID;//customer id 
    int numBooks=0;//number of books 
    double PurchaseAmt=0;//cost of books 

public: 
    void setMN(string); 
    void setmID(string); 
    void setnBks(int); 
    void setcost(double); 
    string getMN() const; 
    string getID()const; 
    int nBks()const; 
    double cost()const;//cost of a book 
    double tcost()const; 
}; 
#endif 

#include "member.h" // Needed for the member class 
#include <iostream>  // Needed for cout 
#include <cstdlib>  // Needed for the exit function 
using namespace std; 

void Member::setMN(string name)//string size for membername 
{ if (name.size() < 12) 
     MemberName = name.substr(0, 12); 
    else 
    { 
     cout << "Invalid Member ID\n"; 
     system("pause"); 
     exit(EXIT_FAILURE); 
    } 
} 

void Member::setmID(string ID)//string size for MemberID 
{ if (ID.size() < 5) 
     MemberID = ID.substr(0,5); 
    else 
    { 
     cout << "Invalid Member ID\n"; 
     system("pause"); 
     exit(EXIT_FAILURE); 
    } 

} 
void Member::setnBks(int num)//check for number of books 
{ if (num > 0) 
     numBooks = num; 
    else 
    { 
     cout << "Invalid book count, must be over 0.\n"; 
     system("pause"); 
     exit(EXIT_FAILURE); 
    } 
} 

void Member::setcost(double amount)//check for cost of the book. 
{ if (amount > 0) 
     PurchaseAmt = amount; 
    else 
    { 
     cout << "Invalid cost, can not be less then 0.\n"; 
     system("pause"); 
     exit(EXIT_FAILURE); 
    } 
} 


string Member::getMN() const 
{ return MemberName; 
} 

string Member::getID() const 
{ return MemberID; 
} 

int Member::nBks() const 
{ return numBooks; 
} 

double Member::cost() const 
{ return PurchaseAmt; 
} 

double Member::tcost() const//getting the total cost of the book(s) 
{ return numBooks * numBooks; 

} 

#include <iostream> 
#include <string> 
#include <iomanip> 
#include "member.h" // Needed for Member class 

using namespace std; 

void getinfo(Member&); 
void display(Member); 

int main() 
{ 
    Member books; 

    system("pause"); 
    return 0; 
} // end main 

//this function returns member name and id, also number of books and the cost. 
    // this function displays the book store's data. 
void getinfo(Member& x) 
{ 
    string MemberName, MemberID; 
    int numBooks; 
    double PurchaseAmt; 

    cout << fixed << showpoint << setprecision(2); 

    cout << "What is the members last name, must be under 12 char?\n"; 
    cin >> MemberName; 
    x.setMN(MemberName); 

    cout << "What is the members ID, must be under 5 int?\n"; 
    cin >> MemberID; 
    x.setmID(MemberID); 

    cout << "How many books?\n"; 
    cin >> numBooks; 
    x.setnBks(numBooks); 

    cout << "How much does each book cost?\n"; 
    cin >> PurchaseAmt; 
    x.setcost(PurchaseAmt); 

} // end getting information. 

void display(Member x) 
{ 
    cout << fixed << showpoint << setprecision(2); 
    cout << "The member's last name is : " << x.getMN << endl; 
    cout << "The member's ID is : " << x.getID << endl; 
    cout << "The number of books bought are : " << x.nBks << endl; 
    cout << "The cost per book is : " << x.cost << endl; 
    cout << "The total is : " << x.tcost << endl; 

} 
+1

Lorsque vous rédigez des questions sur les erreurs, essayez de réduire au minimum le code pour que les parties concernées (y créer de préférence un [minimal, complet et Vérifiable Exemple] (http://stackoverflow.com/help/mcve) pour nous montrer), et aussi baliser les lignes avec les erreurs dans la source que vous montrez (avec par exemple un commentaire dans le code). Et le compilateur vous dira * exactement * où il trouve l'erreur, il montrera toujours le nom de fichier et le numéro de ligne, et parfois même le nom de la fonction. –

+0

Will, je suis désolé de la grande quantité de code. – kobe

Répondre

1

Vous avez juste oublié le() après le nom de la méthode

void display(Member x) 
{ 
    cout << fixed << showpoint << setprecision(2); 
    cout << "The member's last name is : " << x.getMN() << endl; 
    cout << "The member's ID is : " << x.getID() << endl; 
    cout << "The number of books bought are : " << x.nBks() << endl; 
    cout << "The cost per book is : " << x.cost() << endl; 
    cout << "The total is : " << x.tcost() << endl; 

} 
+0

oh wow .. je ne peux pas croire que j'ai manqué cela .. merci beaucoup – kobe