> 백엔드 개발 > C++ > 본문

C++ 컴파일 오류: '클래스 'ClassName'에 매개변수가 있는 생성자가 없습니다.'를 해결하는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-08-26 08:15:32
원래의
1032명이 탐색했습니다.

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

C++ 컴파일 오류에 대한 해결 방법: '클래스 'ClassName'에 매개변수가 있는 생성자가 없습니다', 어떻게 해결합니까?

C++로 프로그램을 작성할 때 컴파일 오류가 자주 발생합니다. 일반적인 오류 중 하나는 "'클래스 'ClassName'에 매개변수가 있는 생성자가 없습니다'"입니다. 즉, 클래스에 매개변수가 있는 생성자가 없습니다. 이 오류는 일반적으로 클래스의 객체를 사용하고 매개변수를 생성자에 전달해야 하지만 클래스의 생성자가 매개변수화된 버전을 정의하지 않을 때 발생합니다. 이 문서에서는 해당 코드 예제와 함께 이 문제를 해결하는 여러 가지 방법을 설명합니다.

방법 1: 매개변수를 사용하여 생성자 정의

가장 직접적인 해결책은 이 클래스에 대한 매개변수를 사용하여 생성자를 정의하는 것입니다. 이런 방식으로 이 클래스의 개체를 인스턴스화할 때 매개 변수를 생성자에 전달할 수 있습니다. 예는 다음과 같습니다.

class ClassName {
public:
  int data;

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

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

int main() {
  ClassName obj(10);  // 使用带参数的构造函数
  return 0;
}
로그인 후 복사

이 예에서는 int 유형의 data 데이터 멤버를 포함하는 ClassName 클래스를 정의합니다. 생성자를 오버로드하여 기본 생성자와 매개변수가 있는 생성자를 정의합니다. ClassName 클래스의 obj 객체를 인스턴스화할 때 매개변수화된 생성자를 사용하고 여기에 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

방법 2: 기본 매개변수 제공

매개변수로 생성자를 정의하는 것 외에도 생성자의 매개변수 목록에서 기본값을 설정할 수도 있으므로 객체를 인스턴스화할 때 매개변수가 선택적으로 전달될 수 있습니다. 예는 다음과 같습니다. 🎜rrreee🎜이 예에서는 생성자 매개변수 value에 대해 기본값 0을 설정했습니다. ClassName 클래스를 사용하여 obj1 객체를 인스턴스화하면 매개변수가 전달되지 않으므로 기본 생성자가 호출됩니다. >가 인스턴스화되면 10 매개변수가 전달되므로 매개변수가 있는 생성자가 호출됩니다. 🎜🎜방법 3: 초기화 목록 사용🎜🎜또 다른 해결책은 초기화 목록을 사용하여 클래스 정의에서 직접 데이터 멤버를 초기화하는 것입니다. 예는 다음과 같습니다. 🎜rrreee🎜이 예에서는 매개변수화된 생성자의 초기화 목록을 사용하여 데이터 멤버 data를 초기화합니다. 이러한 방식으로 ClassName 클래스의 obj 개체를 인스턴스화하면 10 매개변수가 data에 직접 할당됩니다. 코드>. 🎜🎜이 세 가지 방법을 사용하면 'C++ 컴파일 오류: '클래스 'ClassName'에 매개변수가 있는 생성자가 없습니다.'' 문제를 해결할 수 있습니다. 프로그램이 원활하게 컴파일되고 실행될 수 있도록 실제 필요에 따라 적절한 방법을 선택하십시오. 🎜

위 내용은 C++ 컴파일 오류: '클래스 'ClassName'에 매개변수가 있는 생성자가 없습니다.'를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿