0

私のコードで奇妙な問題が発生しています (または、少し錆びているだけかもしれません): 次のコード:

#include <iostream>
#include <vector>

using namespace std;

typedef vector<double> vDouble;
typedef vector<int> vInt;

//Class for calculations
class CallCosts
{
    CallCosts::CallCosts();
    CallCosts::CallCosts(vDouble nrates(4, 0)); //Constructor

    void CallCosts::setRates(vDouble sr(4, 0));
    void CallCosts::getTotals(vDouble gt(4, 0), vInt minutes(4, 0));

    vDouble rates(4, 0);
    vDouble totals(4, 0);

};

コンパイラは 16 行目でエラーを表示します。

CallCosts::CallCosts(vDouble nrates(4, 0)); //Constructor

エラー: '(' トークンの前に ',' または '...' が必要です。

これで、 ; を見逃していないと確信しています。他に何が原因でしょうか?別のメモ: 以前は typedef の代わりに単純な変数を使用していましたが、コードは機能していたので、おそらくそれが問題ですが、それ以上のことはわかりません。

前もって感謝します。

4

2 に答える 2

3

コンストラクターの宣言が間違っています:

 CallCosts::CallCosts(vDouble nrates(4, 0));

次のようになります。

CallCosts(const vDouble& nrates);

ベクトルを const 参照で渡します。

定義は次のようになります。

CallCosts::CallCosts(const vDouble& nrates) : rates(nrates) {}

ここでは、イニシャライザ リストを使用して、コンストラクタに引数として渡されたものでプライベート変数を初期化しています。

于 2012-12-05T13:29:37.827 に答える
2

CallCosts::クラス宣言内を削除します。

また、これはCallCosts::CallCosts(vDouble nrates(4, 0));どういう意味ですか?

タイプ のパラメーターを持つコンストラクターが必要な場合はvDouble、 を使用しますCallCosts(vDouble nrates)。デフォルト値を指定する場合は、これCallCosts(vDouble nrates= vDouble(4, 0));を行い、デフォルト コンストラクターを削除します。

于 2012-12-05T13:25:29.700 に答える