新しい質問(またはあなたが到着したときに応じて、古い)
class Wand
{
mouse mouseEmu(0,0);
// ^^^^^^ This bit is illegal.
// Remove it here. You specify the parameters
// Passed to members in the constructor.
QCursor pt;
};
は次のとおりです。
class Wand
{
Ward(): mouseEmu(0,0) {}
mouse mouseEmu;
QCursor pt;
};
編集:に基づいて
回答それが違法に変更される前の質問。
あなたは、コンパイラ工場あなたのための暗黙のデフォルトコンストラクタコンストラクタを提供しない場合:あなたはワンドのオブジェクトを作成するときに
Wand::Wand()
: mouseEmu()
, pt()
{}
のthousを。 Wandオブジェクトの構築の一環として、メンバー(mouseEmuおよびpt)を自動的に作成および初期化します。コンストラクタを呼び出す(クラスで宣言された順序で)。
注:独自のコンストラクタを定義している場合。しかし、明示的にメンバーの構築の順序が宣言の常にためである(その後、メンバーのデフォルトコンストラクタが暗黙的に呼び出され、あなたのメンバーのコンストラクタを呼び出すことはありません。
// Example:
// If you did:
class Wand
{
Wand(int x) : mouseEmu(0,x) {}
// The above will generate this logical code.
Wand(int x) : mouseEmu(0,x), pt() {}
}
だけではなく、メンバーのサブオブジェクト、ベースサブまた-objectsワンドと間違って何 –
::ワンド(){ mouseEmu(0,0);}。。 –
mouseEmuオブジェクトの再初期化されるので、はい私は再びエラー – CppLearner