Heim > Backend-Entwicklung > C++ > Wie behebt man den C++-Kompilierungsfehler: „Klasse ‚Klassenname' verfügt nicht über einen Konstruktor mit Parametern'?

Wie behebt man den C++-Kompilierungsfehler: „Klasse ‚Klassenname' verfügt nicht über einen Konstruktor mit Parametern'?

WBOY
Freigeben: 2023-08-26 08:15:32
Original
1036 Leute haben es durchsucht

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

Lösung für C++-Kompilierungsfehler: „Klasse ‚Klassenname‘ verfügt nicht über einen Konstruktor mit Parametern“, wie lässt sich das Problem lösen?

Beim Schreiben von Programmen in C++ treten häufig Kompilierungsfehler auf. Einer der häufigsten Fehler ist „‚Klasse ‚Klassenname‘ verfügt nicht über einen Konstruktor mit Parametern‘“, d. h. die Klasse verfügt nicht über einen Konstruktor mit Parametern. Dieser Fehler tritt normalerweise auf, wenn wir ein Objekt einer Klasse verwenden und Parameter an den Konstruktor übergeben müssen, der Konstruktor der Klasse jedoch keine parametrisierte Version definiert. In diesem Artikel werden verschiedene Möglichkeiten zur Lösung dieses Problems sowie entsprechende Codebeispiele beschrieben.

Methode 1: Definieren Sie einen Konstruktor mit Parametern

Die direkteste Lösung besteht darin, einen Konstruktor mit Parametern für diese Klasse zu definieren. Auf diese Weise können Sie beim Instanziieren eines Objekts dieser Klasse Parameter an den Konstruktor übergeben. Hier ist ein Beispiel:

class ClassName {
public:
  int data;

  // 默认构造函数
  ClassName() {
    data = 0;
  }

  // 带参数的构造函数
  ClassName(int value) {
    data = value;
  }
};

int main() {
  ClassName obj(10);  // 使用带参数的构造函数
  return 0;
}
Nach dem Login kopieren

In diesem Beispiel definieren wir eine Klasse ClassName, die ein Datenelement data vom Typ int enthält. Durch Überladen des Konstruktors definieren wir einen Standardkonstruktor und einen Konstruktor mit Parametern. Wenn wir das Objekt obj der Klasse ClassName instanziieren, verwenden wir den parametrisierten Konstruktor und übergeben ihm den 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;
}
Nach dem Login kopieren

在这个示例中,我们为构造函数的参数value设置了默认值0。当我们使用ClassName类实例化对象obj1时,没有传递参数,因此默认构造函数会被调用;而当实例化对象obj2时,传递了参数10,所以会调用带参数的构造函数。

方法三:使用初始化列表

另一种解决方法是使用初始化列表,在类的定义中直接初始化数据成员。以下是一个示例:

class ClassName {
public:
  int data;

  // 默认构造函数
  ClassName(int value) : data(value) {}
};

int main() {
  ClassName obj(10);  // 使用带参数的构造函数
  return 0;
}
Nach dem Login kopieren

在这个示例中,我们在带参数的构造函数中使用初始化列表来初始化数据成员data。这样,当我们实例化ClassName类的对象obj时,会直接将参数10赋值给data

Methode 2: Standardparameter bereitstellen

Zusätzlich zum Definieren eines Konstruktors mit Parametern können wir auch Standardwerte in der Parameterliste des Konstruktors festlegen, sodass Parameter beim Instanziieren des Objekts selektiv übergeben werden können. Hier ist ein Beispiel: 🎜rrreee🎜In diesem Beispiel legen wir den Standardwert 0 für den Konstruktorparameter value fest. Wenn wir die Klasse ClassName verwenden, um das Objekt obj1 zu instanziieren, werden keine Parameter übergeben, daher wird der Standardkonstruktor aufgerufen und wenn das Objekt obj2 wird instanziiert. Wenn der Parameter 10 übergeben wird, wird der Konstruktor mit Parametern aufgerufen. 🎜🎜Methode 3: Initialisierungsliste verwenden🎜🎜Eine andere Lösung besteht darin, eine Initialisierungsliste zu verwenden, um Datenelemente direkt in der Definition der Klasse zu initialisieren. Hier ist ein Beispiel: 🎜rrreee🎜In diesem Beispiel initialisieren wir das Datenelement data mithilfe einer Initialisierungsliste im parametrisierten Konstruktor. Wenn wir auf diese Weise das Objekt obj der Klasse ClassName instanziieren, wird der Parameter 10 direkt data zugewiesen. Code>. 🎜🎜Mit diesen drei Methoden können wir das Problem „C++-Kompilierungsfehler: „Klasse ‚Klassenname‘ verfügt nicht über einen Konstruktor mit Parametern““ lösen. Wählen Sie die geeignete Methode entsprechend den tatsächlichen Anforderungen aus, damit das Programm kompiliert werden und reibungslos ausgeführt werden kann. 🎜

Das obige ist der detaillierte Inhalt vonWie behebt man den C++-Kompilierungsfehler: „Klasse ‚Klassenname' verfügt nicht über einen Konstruktor mit Parametern'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage