2013-04-11 8 views
1

Итак, у меня проблемы с этой программой на C++, которую я должен сделать для школы, и мне нужна помощь с ошибкой, которую я продолжаю получать. У меня есть основы, но мне нужна помощь с классами и объектами.Ошибка: ожидаемое первичное выражение перед '.' token

#include <cstdlib> 
#include <iostream> 
#include <string> 
using namespace std; 

class BankAccount { 
private: 
    double accountBalance; 
    string name;   
public: 
    BankAccount(); 
    BankAccount(string,double); 
    double deposit(double); 
    double withdraw(double); 
    void checkBalance();      
}; 

BankAccount::BankAccount() 
{ 
    accountBalance=0; 
    name=""; 
} 

BankAccount::BankAccount(string name,double money) 
{ 
    name=name; 
    accountBalance=accountBalance;         
} 

double BankAccount::deposit(double money) 
{ 
    accountBalance+=money; 
    return accountBalance; 
} 

double BankAccount::withdraw(double money) 
{ 
    accountBalance-=money; 
    return accountBalance; 
};    

void BankAccount::checkBalance() 
{ 
    cout<<"The balance on the account is $"<<accountBalance<<"!!"<<endl;  
};                            
int main(int argc, char *argv[]) 
{ 
    int c; 
    double m; 
    string n; 
    cout<<"==================Bank======="<<endl; 
    cout<<"[1] Open a new Bank Account |"<<endl; 
    cout<<"[2] Deposit money   |"<<endl; 
    cout<<"[3] Withdraw money   |"<<endl; 
    cout<<"[4] Check balance   |"<<endl; 
    cout<<"============================="<<endl; 
    cout<<endl; 
    cout<<"What would you like to do :"; 
    cin>>c; 

    switch (c){ 
    case 1: 
     cout<<"Ok I see you want to open a new Bank Account"<<endl; 
     cout<<"But first answer a few questions:"<<endl; 
     cout<<"What is your name? "; 
     cin>>n; 
     cout<<"Next tell me the amount of money you wish to open your account with: "; 
     cin>>m; 
     BankAccount::BankAccount(n,m); 
     cout<<"OK all set, "<<n<<"!!"<<endl; 
     break; 
    case 2: 
     cout<<"How much money would you like to deposit? : "; 
     cin>>m; 
     BankAccount.deposit(m); 
     break; 
    case 3: 
     cout<<"How much money would you like to withdraw? : "; 
     cin>>m; 
     BankAccount.withdraw(m); 
     break; 
    case 4: 
     cout<<"OK I'll check your balance"<<endl; 
     BankAccount.checkBalance();    
     break; 
    } 
    system("PAUSE"); 
    return EXIT_SUCCESS; 
} 

Так что если бы вы могли мне помочь, это было бы очень оценено.

+1

Какая ошибка вы получаете? – iain

+0

[main.cpp: 69: 37: error: не удается вызвать конструктор «BankAccount :: BankAccount» напрямую] (http://coliru.stacked-crooked.com/view?id=167471d10762fc1cc539b5b427b9a5a7-50d9cfc8a1d350e7409e81e87c2653ba) в GCC, поэтому он должен есть Visual Studio –

ответ

3

BankAccount - это имя типа, а не имя переменной. Вы не можете вызывать методы экземпляра для типа.

Создайте переменную типа BankAccount, присвоить ему экземпляр, а затем вызывать методы экземпляра, используя те же обозначения, что у вас уже есть:

BankAccount acct; 
switch (c){ 
case 1: 
    cout<<"Ok I see you want to open a new Bank Account"<<endl; 
    cout<<"But first answer a few questions:"<<endl; 
    cout<<"What is your name? "; 
    cin>>n; 
    cout<<"Next tell me the amount of money you wish to open your account with: "; 
    cin>>m; 
    acct = BankAccount(n,m); 
    cout<<"OK all set, "<<n<<"!!"<<endl; 
    break; 
case 2: 
    cout<<"How much money would you like to deposit? : "; 
    cin>>m; 
    acct.deposit(m); 
    break; 
case 3: 
    cout<<"How much money would you like to withdraw? : "; 
    cin>>m; 
    acct.withdraw(m); 
    break; 
case 4: 
    cout<<"OK I'll check your balance"<<endl; 
    acct.checkBalance();    
    break; 
} 
+0

Хорошо, я получил благодарность за ответ. – user2272015

0

BankAccount класс вы определили, вы не можете использовать :: оператора для доступа к non-static членам этого класса. В этом случае вам нужно сначала создать объект BankAccount, а затем использовать dot operator для доступа к deposit и другим функциям-членам, поскольку функции-члены non-static связаны с экземпляром класса.

Если deposit и другие соответствующие функции static функция-член, вы можете это сделать.