Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menyelesaikan ralat kompilasi C++: 'class 'ClassName' tidak mempunyai pembina dengan parameter'?
Penyelesaian kepada ralat kompilasi C++: 'class 'ClassName' tidak mempunyai pembina dengan parameter', bagaimana untuk menyelesaikannya?
Apabila menulis atur cara dalam C++, kita sering menghadapi ralat kompilasi. Salah satu ralat biasa ialah "'class 'ClassName' tidak mempunyai pembina dengan parameter'", iaitu, kelas tidak mempunyai pembina dengan parameter. Ralat ini biasanya berlaku apabila kita menggunakan objek kelas dan perlu menghantar parameter kepada pembina, tetapi pembina kelas tidak menentukan versi parameter. Artikel ini menerangkan beberapa cara untuk menyelesaikan masalah ini, bersama-sama dengan contoh kod yang sepadan.
Penyelesaian yang paling langsung ialah mentakrifkan pembina dengan parameter untuk kelas ini. Dengan cara ini, apabila menginstant objek kelas ini, anda boleh menghantar parameter kepada pembina. Berikut ialah contoh:
class ClassName { public: int data; // 默认构造函数 ClassName() { data = 0; } // 带参数的构造函数 ClassName(int value) { data = value; } }; int main() { ClassName obj(10); // 使用带参数的构造函数 return 0; }
Dalam contoh ini, kami mentakrifkan kelas Nama Kelas
yang mengandungi ahli data data
jenis int
. Dengan melebihkan pembina, kami mentakrifkan pembina lalai dan pembina dengan parameter. Apabila kami membuat instantiate objek obj
kelas ClassName
, kami menggunakan pembina berparameter dan memberikannya parameter 10
. 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
0
untuk parameter pembina value
. Apabila kami menggunakan kelas ClassName
untuk menjadikan objek obj1
, tiada parameter diluluskan, jadi pembina lalai akan dipanggil dan apabila objek obj2
disegerakan Apabila , parameter 10
diluluskan, jadi pembina dengan parameter akan dipanggil. 🎜🎜Kaedah 3: Gunakan senarai permulaan🎜🎜Penyelesaian lain ialah menggunakan senarai permulaan untuk memulakan ahli data secara langsung dalam takrifan kelas. Berikut ialah contoh: 🎜rrreee🎜Dalam contoh ini, kami memulakan obj
kelas ClassName
, parameter 10
akan diberikan terus kepada data kod>. 🎜🎜Dengan tiga kaedah ini, kita boleh menyelesaikan masalah 'ralat kompilasi C++: 'class 'ClassName' tidak mempunyai pembina dengan parameter''. Pilih kaedah yang sesuai mengikut keperluan sebenar supaya program dapat disusun dan berjalan dengan lancar. 🎜
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat kompilasi C++: 'class 'ClassName' tidak mempunyai pembina dengan parameter'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!