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 » ?

Comment résoudre l'erreur de compilation C++ : « la classe 'ClassName' n'a pas de constructeur avec des paramètres » ?

WBOY
WBOYoriginal
2023-08-26 08:15:321019parcourir

解决C++编译错误:'class 'ClassName' does not have a constructor with parameters',如何解决?

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.

Méthode 1 : Définir un constructeur avec des paramètres

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

Méthode 2 : fournir des paramètres par défaut

En plus de définir un constructeur avec des paramètres, nous pouvons également définir des valeurs par défaut dans la liste des paramètres du constructeur, afin que les paramètres puissent être transmis de manière sélective lors de l'instanciation de l'objet. Voici un exemple : 🎜rrreee🎜Dans cet exemple, nous définissons la valeur par défaut 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn