(C ++ 및 GCC) 오류 : 예상 생성자, 파괴자 또는 '인라인'전에 변환을 입력

StackOverflow https://stackoverflow.com/questions/1227842

  •  22-07-2019
  •  | 
  •  

문제

인라인 템플릿 메소드가있는 헤더 파일이 있습니다. 클래스 선언을 추가했습니다 (몇 가지 정적 메소드입니다 ... 클래스보다 네임 스페이스에 가깝습니다). 새 클래스를 사용하는 파일 에서이 컴파일 오류를 얻기 시작했습니다.

불만없이 여전히 컴파일하는 동일한 .h 파일이 포함 된 다른 파일이 여러 개 있습니다.

오류에 대한 인터넷 검색은 유사한 오류 메시지가있는 프로젝트의 버그에 대한 메일 링리스트에 대한 많은 링크를 제공합니다 (생성자, 파괴자 또는 유형 변환이 우선하는 것으로 보이는 유일한 차이점).

나는 베어 본을 최소화 할 때까지 다른 모든 것을 벗겨 내기 시작할 준비가되어있어 지능적으로 질문을 할 수 있지만 먼저 어리석은 길을 묻는 데 찌르라고 생각했습니다.

누구 든지이 오류 메시지가 실제로 무엇에 대한 기본 단서를 줄 수 있습니까? 수단 그래서 추적/Google을 추적 할 수 있습니까?

완전성을 위해서, 내가보고있는 곳의 첫 번째 예는 다소 비슷하게 보입니다.

namespace Utilities
{
   template <typename T> GLfloat inline NormalizeHorizontally(T x)
   {
      GLfloat scaledUp = x*2.0;
      GLfloat result = scaledUp / Global::Geometry::ExpectedResolutionX;
      return result;
   }
}
도움이 되었습니까?

해결책

그것은 당신이 "인라인"키워드를 잘못된 위치에 놓았다는 것을 의미합니다. 메소드의 리턴 유형 (예 :

 template <typename T> inline GLfloat  NormalizeHorizontally(T x)

그렇게 간단합니다.

하나의 컴파일 장치 에이 메시지를 얻은 이유는 다른 편집 장치에서 인스턴스화되지 않은 템플릿 기능이기 때문일 수 있습니다.

일반적으로 "foobar 이전에 예상되는 blah blah"오류가 발생하면 파싱 오류이며 종종 누락 된 세미콜론, 버팀대 누락 또는 오해 된 키워드와 같은 간단한 구문 실수를 나타냅니다. 문제는 일반적으로 언급 된 부분 주위의 어딘가에 있지만 실제로는 오래 걸릴 수 있으므로 때로는 사냥을해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top