こんにちは、私は完璧に動作し、このコードを持っている:私は引数を送信するために行うことができますどのように
main.cppに:
#include <iostream>
#include "class1.hpp"
int main(){
Class1 class1;
return EXIT_SUCCESS;
}
class1.cpp
#include <iostream>
#include "class1.hpp"
Class1 :: Class1(){
class2;
}
class1.hpp
#ifndef DEF_CLASS1
#define DEF_CLASS1
#include "class2.hpp"
class Class1{
public:
Class1();
Class2 class2;
};
#endif
class2.cpp:
#include <iostream>
#include "class2.hpp"
Class2 :: Class2(){
std::cout << "Test OK1" << std::endl;
}
class2.hpp:
#ifndef DEF_CLASS2
#define DEF_CLASS2
class Class2{
public:
Class2();
};
#endif
私はコンパイル
と私はそれは大丈夫ですので、私は "テストOK1" を取得するコードを実行します。今、私はこのようなクラス2への議論を入れたいと思いますclass2(std::string a)
残念なことに、成功なしで多くのことを試したので、どうしたらいいですか?
コンストラクタ 'Class1 :: Class1()'は何とか変わっています。その本体では、エフェクトレスの式 'class2;'があります。これは構文的には正しいですが、メンバーClass1 :: class2をこのように構築しようとしているのであれば、うーん... C++の本をもう一度見てください... – Scheff
これを解決する解決策はありますか? –
など。 'Class1 :: Class1():class2(){}'は、メンバ 'Class1 :: class2'のデフォルトコンストラクタを呼び出します。あなたのコードにあるように、これは暗黙のうちに行われます。引数を持つように 'Class2'のコンストラクタを変更すると、あなたのコードはもうコンパイルされません...(Btw。本のヒントは真剣に意味されていました) – Scheff