2015-12-09 2 views
0

Ошибка, которую я получаю, есть C3867 'Member::getMN': non-standard syntax; use '&' to create a pointer to member'. Такая же ошибка для getID, nBks, cost и tcost.C++ Создание магазина книг, ошибка синтаксиса

Запрашивать имя и идентификатор клиентов, затем количество книг, которые они хотят, и запрашивать стоимость этой книги. Должен показать всю информацию. Не знаю, где моя ошибка.

#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

При размещении вопросов об ошибках, попытайтесь минимизировать код только соответствующие части (желательно создать [Minimal, Complete, и Проверяемость Пример] (http://stackoverflow.com/help/mcve), чтобы показать нам), а также выделите строки с ошибками в источнике, который вы показываете (например, с комментарием в коде). И компилятор скажет вам * точно *, где он обнаружит ошибку, он всегда будет показывать имя файла и номер строки, а иногда даже имя функции. –

+0

Прошу прощения за большой код. – kobe

ответ

1

Вы просто забыли() после имени метода

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..Я не могу поверить, что я пропустил это ... Большое спасибо – kobe

Смежные вопросы