> 백엔드 개발 > C++ > C++ 오류: 포인터가 아닌 클래스 멤버에 대한 화살표 작업 호출은 허용되지 않습니다. 해결 방법은 무엇입니까?

C++ 오류: 포인터가 아닌 클래스 멤버에 대한 화살표 작업 호출은 허용되지 않습니다. 해결 방법은 무엇입니까?

WBOY
풀어 주다: 2023-08-21 21:41:05
원래의
1217명이 탐색했습니다.

C++는 객체 지향 프로그래밍 언어의 장점은 개발자가 캡슐화, 상속, 다형성 및 기타 기능을 지원하고 코드의 가독성과 유지 관리성을 향상시킬 수 있다는 것입니다. 그러나 일상적인 개발 과정에서 우리는 필연적으로 다양한 오류와 예외에 직면하게 되며 이러한 문제를 처리하는 것은 프로그래머의 일상 업무입니다. 그 중 "포인터가 아닌 클래스 멤버에 대한 화살표 작업 호출이 허용되지 않습니다"라는 문제를 어떻게 해결합니까?

먼저 이 오류의 의미를 이해해 보겠습니다. C++에서 화살표 연산자(->)는 구조체나 클래스 포인터의 멤버 함수나 멤버 변수에 액세스하는 데 사용됩니다. 경우에 따라 화살표 연산자를 사용하여 포인터가 아닌 유형의 멤버에 액세스하면 이 오류가 발생합니다. 예를 들어 다음 코드는 이 오류를 일으킬 수 있습니다.

class person{
public:
    void print(){
        cout<<"name:"<<name<<endl;
        cout<<"age:"<<age<<endl;
    }
private:
    string name;
    int age;
};
int main(){
    person p;
    p->print();
    return 0;
}
로그인 후 복사

위 코드에서는 객체의 멤버를 인쇄하는 인쇄 기능이 있는 person이라는 클래스를 정의하고 기본 함수 Object p에서 person을 인스턴스화합니다. 인쇄 기능에 액세스하려면 화살표 연산자를 사용하십시오. 그러나 컴파일하고 실행하려고 하면 "포인터가 아닌 클래스 멤버에 대한 화살표 작업 호출은 허용되지 않습니다"라는 오류 메시지가 나타납니다.

다음으로 이 문제에 대한 해결책을 찾아야 합니다. 이 오류의 가장 일반적인 원인은 포인터가 아닌 유형에서 화살표 연산자를 사용하려고 시도하는 것입니다. 해결책은 간단합니다. 화살표 연산자(->)를 점 연산자(.)로 바꾸면 됩니다.

int main(){
    person p;
    p.print();
    return 0;
}
로그인 후 복사

이때 코드를 다시 컴파일하고 실행하면 오류가 사라진 것을 확인할 수 있습니다. 그리고 프로그램도 정상적으로 실행될 수 있습니다.

위의 방법 외에도 포인터를 사용하는 더 좋은 방법이 있습니다. C++에서 포인터는 클래스의 멤버에 액세스하기 위해 클래스의 객체를 가리킬 수 있는 매우 일반적인 데이터 유형입니다. 포인터를 사용하면 위의 문제를 피할 수 있을 뿐만 아니라 객체를 보다 유연하게 조작할 수 있습니다. 예를 들어 위 코드를 다음과 같이 수정할 수 있습니다.

int main(){
    person *p = new person;
    p->print();
    delete p;
    return 0;
}
로그인 후 복사

이 버전의 코드에서는 person 클래스를 가리키는 포인터 p를 사용하여 인쇄 기능에 액세스합니다. 이러한 방식으로 객체를 유연하게 생성 및 삭제하고 객체 수명 문제로 인한 오류를 방지할 수 있습니다.

간단히 말하면 "포인터가 아닌 클래스 멤버에 대한 화살표 연산 호출은 허용되지 않습니다"라는 오류는 연산자를 바꾸거나 포인터를 사용하여 해결할 수 있습니다. 이 문제는 사소해 보일 수 있지만 불필요한 문제와 오류를 피하기 위해 코드를 작성할 때 더 주의하고 C++ 기능을 사용할 때 언어 사양을 따라야 함을 상기시켜 줍니다.

위 내용은 C++ 오류: 포인터가 아닌 클래스 멤버에 대한 화살표 작업 호출은 허용되지 않습니다. 해결 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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