2015-09-25 2 views
-1
#include <iostream> 
#include <string> 
using namespace std; 

class account { 


    public: 


     double credit(account account, double add); 

     double debit(account account, double withdraw); 

     double getBalance(account account); 

     double addAccountBalance(account account1, account account2); 



     account() { 


      balance = 0; 

     } 
     account::account(){ 


      if (balance <= 0){ 
       cout << "Initial balance was invalid!" ; 
       balance = 0; 
      } 
     } 


    private: 

    double balance; 

}; 


    int main(){ 

поэтому проект, который у меня есть, заключается в создании двух банковских счетов. проблема заключается в том, как создать объекты учетной записи класса и инициализировать ее с помощью конструктора (учетной записи) по умолчанию и одного с другим (account :: account). для конструктора по умолчанию я не говорю о неявном конструкторе, который использует компилятор. но о том, что у меня там. Я хочу использовать эти переменные в основном. первый конструктор. по умолчанию. устанавливает баланс в 0, а второй устанавливает его на ноль, если баланс является отрицательным числом;Как создать объекты класса с разными конструкторами?

в основном создайте одну учетную запись по умолчанию и другую с конструктором, отличным от стандартного.

+0

Какова сложность, с которой вы сталкиваетесь при создании объектов класса с конструктором less less и с одним параметром? Чтобы понять, какой конструктор был вызван, используйте точки останова или записывайте его на консоль. –

ответ

0

У вас должен быть конструктор, отличный от стандартного, как этот, который принимает параметр. Поскольку у вас это, оба конструктора не принимают параметров, и поэтому оба являются кандидатами на конструктор по умолчанию. Поэтому я не думаю, что вы программируете даже для компиляции.

account (double _balance){ 
     if (_balance <= 0){ 
      cout << "Initial balance was invalid!" ; 
      balance = 0; 
     } else { 
      balance = _balance; 
     } 

} 
+0

Я предполагаю, что Интернет не всегда прав. Благодарю. –

+0

У меня нет достаточной репутации. но в любом случае. как мне инициализировать первую переменную? так как у меня нет аргументов, а баланс - частный? мне нужно использовать функцию setter здесь? но мне сказали инициализировать его, я могу это сделать вместе с определением? –

+0

wait, конструктор инициализирует его 0. Это глупо. –

0

Учетная запись (account), которую вы внедрили внутри учетной записи, не является конструктором.

Для этого необходимо overload constructors.

Вы могли бы конструкторы:

class account { 
    account(); 
    account(double initialBalance); 
} 

Так что, если вы инстанцируете счет без каких-либо параметров, то первый конструктор будет вызван. Если вы предоставите initialBalance, будет использоваться второй.

+0

Могу ли я сделать это с основного? –

+0

Создать? да. 'account myaccount (1.1);' Создаст объект с именем myaccount, который будет инициализирован с использованием второго конструктора. 'account otheraccount;' создаст объект, называемый otheraccount, и использует первый конструктор. – tstark81

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