私はchar*,char*, ostream
というコンストラクタを持つC++クラスを持っています。私はostream
(cerr
)のデフォルト値を提供したいと思います。これはヘッダか.cpp
ファイルで行われますか?コンストラクタのデフォルト引数 - C++
答えて
パラメータを参照パラメータにする必要があります。std::cerr
をコピーしないでください。おそらく、クラスのすべてのクライアントが見ることができるように、ヘッダファイルにデフォルトパラメータを指定する必要があります。
class MyClass {
public:
MyClass(char*, char*, std::ostream& = std::cerr);
// ...
};
私はそれを実現しました。 Hm。迅速な対応に感謝します。次の問題を解消する! (今、私はsegfaultsを取得しています。Woot。)(別の理由で)。 – Linuxios
デフォルトの引数は、関数が宣言されたときに指定されます。この場合のヘッダファイルです。
ヘッダーファイルでは、既定値を宣言します。
functionname(char *arg1, char* arg2, ostream &arg3 = cerr);
そして、あなたは、単にそれがあることを期待したいのcppファイルに:
functionname(char *arg1, char* arg2, ostream &arg3) {
}
IE、.cppファイルに入れないでください。
値で 'ostream'を渡すことはできません! –
refに変更されました。ありがとう。 –
C++は別のコンパイルを使用します。各cppファイルは別々にコンパイルされます。 cppのデフォルト値であれば正常に動作しますが、このデフォルト値はcppファイルでのみ表示されます。
プロジェクトコンパイラの他のファイルにヘッダファイルをインクルードすると、ヘッダファイルから必要なすべての情報が決まります。デフォルト値がcppファイルの場合、プロジェクトの他の部分は、既にコンパイルされている可能性があるため、cppファイルを調べることはできません。したがってほとんどの場合、のデフォルト値はヘッダファイルに保存してください。
cppファイルコンパイラをコンパイルするときにデフォルト値を使用するかどうかを選択できず、コンパイルエラーが発生するなど、cppファイルとhファイルの両方にデフォルト値を設定することはできません。
あなたのソリューションは、(ヘッダファイルで)です:あなたは、CPPファイルのデフォルト値を指定することもまれで
class MyClass
{
public:
MyClass(char*, char*, ostream& = cerr);
...
};
、あなたが見ると、他のすべての部分の間、それらを使用するためにのみ、このファイルをしたい場合プロジェクトはこれを行うことができませんでした。しかし、これはごくまれに発生します。
- 1. C++コンストラクタの引数のデフォルト値
- 2. 移動コンストラクタのデフォルトの引数
- 3. C++配列コンストラクタの引数
- 4. C++、デフォルトのコンストラクタ
- 5. C++オプション/デフォルト引数
- 6. C++では、デフォルトの引数だけを持つコンストラクタは、デフォルトのコンストラクタですか?次のコードで
- 7. Cのデフォルト引数値
- 8. Objective-Cデフォルトの引数値
- 9. C++のデフォルト引数エラー
- 10. テンプレート引数のデフォルトは、C++
- 11. C++のデフォルトの引数コンストラクタ対インラインの初期化の優先度
- 12. サブクラスのデフォルトのコンストラクタ引数値(親クラスから継承)
- 13. 関数テンプレートのデフォルト引数C++
- 14. デフォルトのコンストラクタC++形式
- 15. CustomDeserializerにデフォルトの(引数なし)コンストラクタがありません
- 16. Scalaクラスのコンストラクタのデフォルトの引数のネーミング
- 17. Spring MVCのデフォルトまたは引数なしのコンストラクタ
- 18. JavaScriptコンストラクタ引数
- 19. C++多型とデフォルトの引数
- 20. C#Windowsサービス - インストール時のデフォルト引数
- 21. 2引数のコンストラクタを呼び出す引数のないコンストラクタ
- 22. テンプレートのデフォルト引数
- 23. C++クラスのコンストラクタ引数の数が変更されました
- 24. 非デフォルトのコンストラクタ
- 25. Pythonのデフォルトの引数と引数名
- 26. C++ 11:デフォルトのコンストラクタ:ImplicitまたはExplicit?
- 27. エラーC2228コンストラクタ引数リストに
- 28. デフォルトのコンストラクタ
- 29. JVMのデフォルト引数
- 30. JavaScriptのコンストラクタと引数
値で 'ostream'を渡すことはできません。 –
可能重複:http://stackoverflow.com/questions/4989483/where-to-put-default-parameter-value-in-c – Karine
ドン; * .cppの用語ヘッダーを使用しないでください。これらの中で)。しかし、むしろ「宣言」と「定義」。デフォルトの引数は '宣言'に入ります。 –