私は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. C++、デフォルトのコンストラクタ
- 3. C++では、デフォルトの引数だけを持つコンストラクタは、デフォルトのコンストラクタですか?次のコードで
- 4. Objective-Cデフォルトの引数値
- 5. Cのデフォルト引数値
- 6. C++のデフォルト引数エラー
- 7. 関数テンプレートのデフォルト引数C++
- 8. JavaScriptコンストラクタ引数
- 9. 2引数のコンストラクタを呼び出す引数のないコンストラクタ
- 10. C++多型とデフォルトの引数
- 11. C#Windowsサービス - インストール時のデフォルト引数
- 12. テンプレートのデフォルト引数
- 13. C++クラスのコンストラクタ引数の数が変更されました
- 14. Pythonのデフォルトの引数と引数名
- 15. エラーC2228コンストラクタ引数リストに
- 16. JVMのデフォルト引数
- 17. Javaコンストラクタの可変引数
- 18. Scalaのパラメトリックフィールドとコンストラクタ引数
- 19. コンストラクタ引数EnumsとMagic Strings
- 20. デフォルトの関数の引数
- 21. emplace()の引数転送はコンストラクタ引数をconstにします
- 22. 配列引数のデフォルト値
- 23. 非デフォルトのコンストラクタ
- 24. コンストラクタのテンプレート引数の控除
- 25. デフォルトのコンストラクタ
- 26. スカラタイムスタンプ/日付ゼロ引数コンストラクタ?
- 27. 継承親コンストラクタ引数
- 28. 使用してデフォルト引数
- 29. Javaのコンストラクタで複数のオプションの引数 - 指数関数のコンストラクタ数
- 30. match.callのデフォルトの引数
値で 'ostream'を渡すことはできません。 –
可能重複:http://stackoverflow.com/questions/4989483/where-to-put-default-parameter-value-in-c – Karine
ドン; * .cppの用語ヘッダーを使用しないでください。これらの中で)。しかし、むしろ「宣言」と「定義」。デフォルトの引数は '宣言'に入ります。 –