私はなぜ、その後、コードの下に書きましたが、私は何の引数のコンストラクタがありません見ることができるように、オーバーロードのエラーメッセージC++で引数コンストラクタを呼び出す方法は?
曖昧ですShape()コンストラクタのあいまいさエラーメッセージが表示され、 how解決できますか?私はオブジェクトコール「形状を()」得ることが
s2
と
s3
の作業を見ることができますが、引数のコンストラクタは表示されません。
次のように私はs1
を宣言しています:
Shape s1();
//の代わりに、Shape s1
その後、私はShape
のprint
方法については、次のメッセージを取得しています。 なぜですか? non-class type
が何を意味するのかと?非クラスタイプである「S1」のメンバ「プリント」の
要求、「形()」
class Shape {
int j;
public:
int i;
const char* const c;
double print() const {
printf("Value of i is %d, j is %d and c is %s\n", i, j, c);
return 0;
}
Shape() :
i(10), j(0), c("Some string") {
}
Shape(int i = 10) :
i(10), j(10), c("Some String") {
this->i = i;
}
Shape(char* c) :
i(), j(), c(strcpy(new char[strlen(c)], c)) {
}
};
int main() {
Shape s1; // call of overloaded 'Shape()' is ambiguous
Shape* s2 = new Shape(1);
Shape s3("Some string");
s1.print(); // When using Shape s1() I am getting request for
// member 'print' in 's1', which is of non-class type 'Shape()'
return 0;
}
これはどういう意味ですか? 'Shape(int i = 10)' – juanchopanza
あなたはこれを読んでみたいです:http://stackoverflow.com/questions/1424510/most-vexing-parse-why-doesnt-aa-work – Rakete1111
@juanchopanza - 引数ですデフォルト値を使用します。引数が与えられない場合、10が渡されたものとみなされます。しかし、ここではもちろん、彼は議論のないコンストラクタも持っていたからです。 – yakobom