C++ 프로그래밍 중에 컴파일 오류가 자주 발생하며 이러한 오류는 매우 혼란스러울 수 있습니다. 이 기사에서는 주로 C++ 컴파일 오류에 대해 설명합니다. "로컬 유형 정의가 유효하지 않습니다. 어떻게 해야 합니까?"
C++ 프로그램에서는 구조와 같은 클래스 내에서 유형을 정의해야 하는 경우가 많습니다. 이는 "typedef" 키워드를 사용하여 달성할 수 있습니다. 예:
class MyClass { public: typedef struct { int x; int y; } Point; Point getPoint(); };
위 프로그램에서는 "typedef"를 사용하여 "Point" 구조를 정의하고 이를 "MyClass" 클래스에서 사용합니다.
그러나 경우에 따라 "typedef"를 사용하면 "잘못된 로컬 유형 정의"라는 컴파일 오류가 발생합니다. 이 오류는 일반적으로 유형을 정의할 때 잘못된 구문을 사용하여 발생합니다. "typedef"를 사용하여 구조를 정의하는 경우 "struct" 키워드를 사용하여 클래스 정의와 구별해야 합니다. 다음은 올바른 작성 방법입니다.
class MyClass { public: typedef struct Point { int x; int y; } Point; Point getPoint(); };
위 프로그램에서 "struct" 키워드는 컴파일러에게 구조를 정의하고 싶다고 알리고, "typedef" 키워드는 이 구조에 이름을 지정하겠다고 컴파일러에 알립니다. "가리키다" . 이런 방식으로 클래스에서 "Point" 유형을 사용할 수 있습니다. 또한 컴파일 오류를 방지하려면 클래스 정의 앞에 이 구조의 정의를 배치해야 합니다.
이 외에도 "잘못된 로컬 유형 정의" 오류가 발생하는 다른 원인이 있습니다. 다음은 몇 가지 일반적인 실수입니다.
class MyClass { public: struct { int x; int y; } Point; // 编译错误:本地类型定义无效 Point getPoint(); };
위 프로그램에서 "Point" 구조는 이름이 없으며 클래스 정의에 사용할 수 없습니다. 다음과 같이 이름을 지정해야 합니다.
class MyClass { public: struct Point { int x; int y; } Point; Point getPoint(); };
class MyClass { public: typedef struct { int x; int y; } Point; Point Point; // 编译错误:本地类型定义无效 Point getPoint(); };
위 프로그램에서는 구조와 변수 모두에 동일한 이름을 정의했기 때문에 컴파일 오류가 발생했습니다. 별도로 이름을 지정해야 합니다.
class MyClass { public: typedef struct { int x; int y; } Point; Point point; Point getPoint(); };
class MyClass { public: typedef Point { int x; int y; } Point; Point getPoint(); // 编译错误:本地类型定义无效 };
위 프로그램에서는 "Point" 구조를 정의하기 위해 "struct" 또는 "union" 키워드를 사용하지 않았으므로 컴파일 오류가 발생했습니다. "typedef" 키워드 자체로는 컴파일러가 이것이 구조체이고 올바른 구문을 사용해야 한다는 사실을 알 수 없습니다.
class MyClass { public: typedef struct { int x; int y; } Point; Point getPoint(); };
요약하면, C++ 컴파일 오류 "잘못된 로컬 유형 정의"는 일반적으로 잘못된 구문을 사용하기 때문에 발생합니다. 또는 클래스에서 명명되지 않은 구조 또는 공용체의 내부 정의로 인해 발생합니다. "typedef" 및 "struct" 키워드를 올바르게 사용하면 이러한 오류를 피할 수 있습니다.
위 내용은 C++ 컴파일 오류: 로컬 유형 정의가 유효하지 않습니다. 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!