C コンパイル エラーの解決策:「クラス 'ClassName' にはパラメーターを持つコンストラクターがありません」。どうすれば解決できますか?
C でプログラムを作成すると、コンパイル エラーが頻繁に発生します。よくあるエラーの 1 つは、「'クラス 'ClassName' にはパラメーターを持つコンストラクターがありません'」です。つまり、クラスにはパラメーターを持つコンストラクターがありません。このエラーは通常、クラスのオブジェクトを使用し、コンストラクターにパラメーターを渡す必要があるが、クラスのコンストラクターがパラメーター化されたバージョンを定義していない場合に発生します。この記事では、この問題を解決するいくつかの方法と、対応するコード例について説明します。
最も直接的な解決策は、クラスのパラメーターを使用してコンストラクターを定義することです。このようにして、このクラスのオブジェクトをインスタンス化するときに、コンストラクターにパラメーターを渡すことができます。以下に例を示します。
class ClassName { public: int data; // 默认构造函数 ClassName() { data = 0; } // 带参数的构造函数 ClassName(int value) { data = value; } }; int main() { ClassName obj(10); // 使用带参数的构造函数 return 0; }
この例では、クラス ClassName
を定義します。これには、タイプ int
data## のデータ メンバーが含まれています # 。コンストラクターをオーバーロードすることにより、デフォルトのコンストラクターとパラメーター付きのコンストラクターを定義します。
ClassName クラスのオブジェクト
obj をインスタンス化するとき、パラメーター化されたコンストラクターを使用し、それにパラメーター
10 を渡します。
class ClassName { public: int data; // 默认构造函数 ClassName(int value = 0) { data = value; } }; int main() { ClassName obj1; // 使用默认构造函数 ClassName obj2(10); // 使用带参数的构造函数 return 0; }
value にデフォルト値
0 を設定します。
ClassName クラスを使用してオブジェクト
obj1 をインスタンス化する場合、パラメーターは渡されないため、デフォルトのコンストラクターが呼び出され、オブジェクト
obj2 がインスタンス化されると、 、パラメータが渡されます パラメータ
10 が渡されるため、パラメータを持つコンストラクタが呼び出されます。
class ClassName { public: int data; // 默认构造函数 ClassName(int value) : data(value) {} }; int main() { ClassName obj(10); // 使用带参数的构造函数 return 0; }
data を初期化します。このようにして、
ClassName クラスのオブジェクト
obj をインスタンス化すると、パラメータ
10 が
data に直接割り当てられます。
以上がC++ コンパイル エラー「クラス 'ClassName' にはパラメーターを含むコンストラクターがありません」を解決する方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。