'newacc' не является классом или пространством имен - PullRequest
0 голосов
/ 21 февраля 2012

Эй, ребята, я довольно новичок в ООП и С ++ в целом, поэтому, пожалуйста, потерпите меня.

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

В файле с именем "account.h" у меня есть:

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

class Account{
string fname;
string lname;
string sinnum;
string accttype;
int numtrans;
double balance;

public:
Account(string,string,string,string);
double DepositAmt(double);
double WithdrawAmt(double);
void PrintStatement();
void getFinalBalance();
};

В файле с именем "account.cpp" у меня есть:

Account::Account(string firstname, string lastname, string sinnumber, string acc
{
fname = firstname;
lname = lastname;
sinnum = sinnumber;
accttype = accounttype;
numtrans = 0;
balance = 0;
}

double Account::DepositAmt(double deposit)
{
balance = balance + deposit;
return balance;
}

double Account::WithdrawAmt(double withdraw)
{
balance = balance - withdraw;
return balance;
}


void Account::PrintStatement()
{
cout << "First Name: " << fname << endl;
cout << "Last Name: " << lname << endl;
cout << "SIN: " << sinnum << endl;
cout << "Account Type: " << accttype << endl;
cout << "Total Transactions: " << numtrans << endl;
cout << "Final balance: $" << balance << endl;
}

void Account::getFinalBalance()
{
cout << "Your Final balance is: $" << balance << endl;
}

И, наконец, в моем последнем файле с именем "ass2012.cpp" у меня есть:

#include "account.h"
#include "account.cpp"

int main()
{
string fname, lname, sinnum, accttype;
int tempaccttype;


cout << "\nPlease enter your last name: " << endl;
cin >> lname;
cout << "\nPlease enter your SIN number: " << endl;
cin >> sinnum;
cout << "\nPlease choose your account type: "<< endl;
cout << "1: Checking" << endl;
cout << "2: Savings" << endl;
cin >> tempaccttype;

if (tempaccttype == 1)
{
 accttype = "Checking";
}
else
{
 accttype = "Savings";
}

Account newacc (fname, lname, sinnum, accttype); // HERE IS WHERE I GET THE ERROR
newacc::getFinalStatement();
return 0;
}

Подскажите, пожалуйста, что я делаю не так!

РЕДАКТИРОВАТЬ: Спасибо, Навин! Это всегда мелочи, которые управляют мной по стене.

Ответы [ 3 ]

5 голосов
/ 21 февраля 2012

Для вызова методов на объектах вы должны использовать оператор ., а не оператор ::, т.е. вы должны делать newacc.getFinalBalance() (обратите внимание, что имя метода также было неправильным, я исправил его здесь).

0 голосов
/ 21 февраля 2012

общий синтаксис:

Objectname.memberfunction();     //public
Objectname.datzmember               //public
classname::staticmembers         //public

:: является оператором разрешения области видимости и используется только при наличии неоднозначности области видимости. иначе там s np нужно использовать это. Хотя это полезно использовать в качестве практики программирования.

0 голосов
/ 21 февраля 2012

Я очень мало знаю о C ++ и программировании в целом, я тоже новичок.Но я бы изменил строку newacc :: getFinalStatement ();to newacc.getFinalStatement () ;.Если это не сработает, я не уверен.

...