2011-11-09 6 views
1

既定のパラメータで関数を定義するクラスがあります。関数定義がそれを呼び出す関数の前にヘッダファイル内にある限り正常に動作します。C++ Builderクラスで既定の関数パラメータを定義し、パラメータが少なすぎます

ただし、呼び出し元関数の後に移動した場合C++ Builder(2010)が報告するパラメータが少なすぎます。

ヘッダには、例えば次のようになります。

class TSomething 
{ 
public: 
void CallingFunction(); 
void Function(int a); 
} 

とcppのファイルは次のようになります。

#include "Header.h" 

TSomething::CallingFunction() 
{ 
Function(); // "Too few arguments" here... 
} 

TSomething::Function(int a = 123) 
{ 
//... some code here ... 
} 

関数を呼び出すことは、「機能」の前にあるのであれば、それはあまりにもいくつかのパラメータを報告します。なぜ私はcppファイルの#include文に関数定義が含まれているのか分かりません。誰も私にこれを再配置する方法を教えてもらえますか?私はこれまでの動作をさせるためにCallingFunctionの上にFunction(int a)を移動することができます。

答えて

4

あなたは、クラス内のメンバ関数の宣言でデフォルト引数に置く必要があります、また

void Function(int a = 123); 

をあなたのクラスの定義の外からデフォルト引数を削除します。

+0

ありがとうございました。そして、私がそれを打ち込んだ分、私はそれがなぜ機能し、私のバージョンがしなかったのか理解しました...ダム...ダム...ダム!宣言と定義では、パラメータは常に呼び出し関数の後にあった。 – Coder12345

関連する問題