2017-01-09 9 views
0

私はOOPで初心者です。コンストラクタの定義に問題があります。 headfile.h:[C++]コンストラクタがコンポーネントを検出しない

#ifndef RACHUNEK_H_INCLUDED 
#define RACHUNEK_H_INCLUDED 

#include <string> 
class Rachunek 
{ 
    std::string surname; 
    std::string nr_account; 
    double balance; 
public: 
    Rachunek(); 
    Rachunek(std::string & name,std::string & nr,double s = 0.0); 
    ~Rachunek(){}; 
    void show(); 
    void give(const double m); 
    void get(const double m); 

}; 

#endif // RACHUNEK_H_INCLUDED 

ファイル.CPP:

#include <iostream> 
#include <string> 
#include "rachunek.h" 
using namespace std; 

Rachunek::Rachunek() //default 
{ 
    surname = "not specified"; 
    nr_account = "0000-0000-0000-0000"; 
    balance = 0.0; 
} 
Rachunek::Rachunek(string & name, string & nr, double s = 0.0) //mysecond 
{ 
    surname = name; 
    nr_account = nr; 
    balance = s; 
} 

問題は、コンストラクタの定義です。私は何が間違っているのか分かりません...

+0

エラーは何ですか? –

+0

定義にエラーがありました:私はこれを長い間探していました – Emilo

+1

コンパイルエラーに加えて、銀行口座残高で浮動小数点を使用することはありません。これにより、監査人は丸め誤差に悩まされます。代わりにセントを使用し、出力を固定して2小数点を表示します。また、初期ゼロ以外の残高を持つ口座を決して作成することはできません。資金は常に他の口座から移転されなければなりません。 (そして、はい、私は銀行のために働いています:-) –

答えて

2

問題はコンストラクタの定義です。何が間違っているのか分かりません...

この機能の定義にはデフォルト値を使用することはできません。デフォルト値は宣言でのみ使用できます。使用:

他のコンストラクタの実装を変更して、イニシャライザリスト構文を使用してメンバ変数を初期化することをお勧めします。

Rachunek::Rachunek() : 
    surname("not specified"), 
    nr_account("0000-0000-0000-0000"), 
    balance(0.0) 
{ 
} 

C++ 11コンパイラを使用できる場合は、委任コンストラクタを使用してさらに簡素化できます。

Rachunek::Rachunek() : Rachunek("not specified", "0000-0000-0000-0000", 0.0) 
{ 
} 
関連する問題