Maison > Article > développement back-end > Comment résoudre l'erreur de compilation C++ : « la classe 'ClassName' n'a pas de constructeur avec des paramètres » ?
Solution à l'erreur de compilation C++ : 'la classe 'ClassName' n'a pas de constructeur avec des paramètres', comment la résoudre ?
Lors de l'écriture de programmes en C++, nous rencontrons souvent des erreurs de compilation. L'une des erreurs courantes est "'la classe 'ClassName' n'a pas de constructeur avec des paramètres'", c'est-à-dire que la classe n'a pas de constructeur avec des paramètres. Cette erreur se produit généralement lorsque nous utilisons un objet d'une classe et devons transmettre des paramètres au constructeur, mais que le constructeur de la classe ne définit pas de version paramétrée. Cet article décrit plusieurs façons de résoudre ce problème, ainsi que des exemples de code correspondants.
La solution la plus directe est de définir un constructeur avec des paramètres pour cette classe. De cette façon, lors de l'instanciation d'un objet de cette classe, vous pouvez transmettre des paramètres au constructeur. Voici un exemple :
class ClassName { public: int data; // 默认构造函数 ClassName() { data = 0; } // 带参数的构造函数 ClassName(int value) { data = value; } }; int main() { ClassName obj(10); // 使用带参数的构造函数 return 0; }
Dans cet exemple, nous définissons une classe ClassName
qui contient une donnée membre data
de type int
. En surchargeant le constructeur, nous définissons un constructeur par défaut et un constructeur avec paramètres. Lorsque nous instancions l'objet obj
de la classe ClassName
, nous utilisons le constructeur paramétré et lui passons le paramètre 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
pour le paramètre du constructeur value
. Lorsque nous utilisons la classe ClassName
pour instancier l'objet obj1
, aucun paramètre n'est passé, donc le constructeur par défaut sera appelé et lorsque l'objet obj2
; > est instancié Lorsque , le paramètre 10
est passé, donc le constructeur avec les paramètres sera appelé. 🎜🎜Méthode 3 : Utiliser la liste d'initialisation🎜🎜Une autre solution consiste à utiliser une liste d'initialisation pour initialiser les données membres directement dans la définition de la classe. Voici un exemple : 🎜rrreee🎜Dans cet exemple, nous initialisons le membre de données data
à l'aide d'une liste d'initialisation dans le constructeur paramétré. De cette façon, lorsque l'on instancie l'objet obj
de la classe ClassName
, le paramètre 10
sera directement affecté à data code>. 🎜🎜Avec ces trois méthodes, nous pouvons résoudre le problème de 'Erreur de compilation C++ : 'la classe 'ClassName' n'a pas de constructeur avec des paramètres''. Choisissez la méthode appropriée en fonction des besoins réels afin que le programme puisse être compilé et exécuté sans problème. 🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!