>백엔드 개발 >C++ >C++ 구문 오류: 열거형 멤버는 고유해야 합니다. 어떻게 수정해야 합니까?

C++ 구문 오류: 열거형 멤버는 고유해야 합니다. 어떻게 수정해야 합니까?

王林
王林원래의
2023-08-21 23:58:501556검색

C++ 프로그램을 작성할 때 다음과 같은 오류 메시지가 나타나는 경우가 있습니다.

"C++ 구문 오류: 열거형 멤버는 고유해야 합니다."

이는 열거형 형식에서 열거형 멤버의 이름이 고유해야 하며 다른 이름일 수 없기 때문입니다. 반복.

이 오류를 해결하는 방법은 무엇입니까? 몇 가지 해결 방법이 아래에 나와 있습니다.

방법 1: 열거형 멤버의 이름을 수동으로 수정합니다.

가장 간단한 방법은 열거형 멤버의 이름이 고유하도록 수동으로 수정하는 것입니다. 예를 들어 중복된 구성원 이름을 다른 이름으로 변경합니다.

예를 들어 아래와 같이 동일한 멤버 이름을 가진 두 멤버를 포함하는 열거형 유형을 정의하는 경우:

enum Fruit
{
    Banana,
    Apple,
    Strawberry,
    Apple
};

그러면 컴파일러는 "C++ 구문 오류: 열거형 멤버는 고유해야 합니다."라는 메시지를 표시합니다. 다음과 같이 멤버 이름 중 하나를 다른 이름으로 변경할 수 있습니다.

enum Fruit
{
    Banana,
    Apple,
    Strawberry,
    Orange
};

이렇게 하면 이 오류가 해결됩니다.

방법 2: typedef를 사용하여 새 열거 유형 정의

원래 열거 유형을 수정하고 싶지 않다면 typedef를 사용하여 새 열거 유형을 정의하고 원래 열거 유형의 이름을 바꿀 수도 있습니다.

예를 들어, 위의 Fruit 열거 유형의 이름을 FruitType:

typedef enum
{
    Banana,
    Apple,
    Strawberry,
    Apple
} FruitType;

으로 바꿀 수 있습니다. 이런 식으로 프로그램에서 FruitType을 사용하여 원래 Fruit 열거 유형을 대체할 수 있습니다.

방법 3: 열거형 클래스 사용

C++11에서는 열거형 유형을 정의할 때 열거형 멤버의 네임스페이스를 제한하여 이름 충돌을 방지할 수 있는 열거형 클래스(enum 클래스)의 새로운 기능을 도입합니다.

예를 들어 enum 클래스를 사용하여 Fruit이라는 열거형 유형을 정의하고 해당 멤버의 네임스페이스를 Fruit로 제한할 수 있습니다.

enum class Fruit
{
    Banana,
    Apple,
    Strawberry,
    Apple
};

이 때 동일한 이름을 가진 두 멤버를 정의하면 컴파일러에서 오류를 보고합니다. , 경고 대신.

요약:

C++에서 열거형 멤버는 고유해야 하며 반복될 수 없습니다. 컴파일러에서 "C++ 구문 오류: 열거형 멤버는 고유해야 합니다."라는 메시지가 표시되면 열거형 멤버 이름을 수동으로 수정하거나, typedef를 사용하여 새 열거형 유형을 정의하거나, 열거형 클래스를 사용하여 문제를 해결할 수 있습니다. 열거형 클래스를 사용하는 방법은 C++11에 도입된 새로운 기능으로, 열거형 멤버의 이름 충돌 문제를 효과적으로 방지할 수 있습니다.

위 내용은 C++ 구문 오류: 열거형 멤버는 고유해야 합니다. 어떻게 수정해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.