>  기사  >  백엔드 개발  >  C++ 컴파일 오류: '인수 목록 없이 템플릿 이름을 잘못 사용했습니다'를 해결하는 방법은 무엇입니까?

C++ 컴파일 오류: '인수 목록 없이 템플릿 이름을 잘못 사용했습니다'를 해결하는 방법은 무엇입니까?

王林
王林원래의
2023-08-25 10:30:322448검색

解决C++编译错误:'invalid use of template-name without an argument list',如何解决?

C++ 컴파일 오류에 대한 해결 방법: '인수 목록 없이 템플릿 이름을 잘못 사용했습니다', 어떻게 해결하나요?

C++ 프로그래밍에서는 다양한 컴파일 오류가 자주 발생합니다. 일반적인 오류 중 하나는 "인수 목록 없이 템플릿 이름을 잘못 사용했습니다"입니다. 이 오류는 일반적으로 템플릿 이름을 잘못 사용하여 발생합니다. 이 문서에서는 이 오류의 원인을 설명하고 몇 가지 해결 방법을 제공합니다.

먼저 이 오류를 시뮬레이션하는 코드 예제를 살펴보겠습니다.

template <typename T>
class MyClass {
public:
    void print(T value) {
        cout << value << endl;
    }
};

int main() {
    MyClass myObject;
    myObject.print(10);
    return 0;
}

위 코드에서는 들어오는 값을 인쇄하기 위한 멤버 함수 print()가 있는 템플릿 클래스 MyClass를 정의합니다. main() 함수에서 MyClass 객체 myObject를 만들고 print() 함수를 호출하여 정수 10을 인쇄하려고 합니다.

그러나 이 코드를 컴파일하려고 하면 다음과 같은 오류 메시지가 나타납니다.

error: invalid use of template-name 'MyClass' without an argument list

이 오류가 발생하는 이유는 myObject 개체를 생성할 때 템플릿 매개변수가 누락되었기 때문입니다. C++에서는 템플릿 클래스가 인스턴스화될 때 템플릿 매개변수를 제공해야 합니다. 이 경우 정수 유형을 허용하는 MyClass 객체를 인스턴스화하고 싶다고 컴파일러에 알려야 합니다.

이 오류를 해결하려면 올바른 템플릿 매개변수를 제공해야 합니다. 위 코드를 다음과 같이 수정합니다.

int main() {
    MyClass<int> myObject;
    myObject.print(10);
    return 0;
}

MyClass 뒤에 bd43222e33876353aff11e13a7dc75f6를 사용하여 정수 유형을 허용하는 MyClass 개체를 인스턴스화하려고 한다고 컴파일러에 알립니다. 이제 코드를 다시 컴파일하면 더 이상 이전 오류가 발생하지 않습니다.

또한 다른 유형을 허용하는 MyClass 객체를 생성하려면 다음과 같은 템플릿 매개변수를 사용할 수 있습니다.

int main() {
    MyClass<double> myObject;
    myObject.print(3.14);
    return 0;
}

이 코드에서는 배정밀도 부동 소수점 숫자 유형을 허용하는 MyClass 객체를 생성하고 Its를 호출합니다. print() 함수는 3.14를 인쇄합니다.

요약하자면, '인수 목록 없이 템플릿 이름을 잘못 사용했습니다.' 오류는 템플릿 클래스 사용 시 올바른 템플릿 매개변수를 제공하지 않아 발생합니다. 이 오류에 대한 해결책은 템플릿 클래스에 올바른 템플릿 매개변수를 제공하는 것입니다.

위의 설명과 샘플 코드를 통해 이 일반적인 컴파일 오류를 더 잘 이해하고 해결할 수 있기를 바랍니다. C++ 코드를 작성할 때 이 오류가 발생하더라도 당황하지 말고 관련 템플릿 사용법을 주의 깊게 확인하고 올바른 템플릿 매개변수를 제공했는지 확인하세요.

위 내용은 C++ 컴파일 오류: '인수 목록 없이 템플릿 이름을 잘못 사용했습니다'를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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