2011-07-04 7 views
3

현재 저는 3D 시각화 프로그램에서 프로그래밍 중이므로 편리한 Vector 작업을 수행하기 위해 자체 Vector3 클래스를 작성했습니다. 그것은 내가 자체 라이브러리 인 Vector3 클래스를 가지고있는 외부 라이브러리를 사용하는 일부 메쉬를로드해야 할 때까지 잘 동작했습니다. 이제 컴파일러는 서로 구분할 수 없으며 코드에 너무 많이 포함되어 있기 때문에 둘 다 변경할 수 없습니다. 컴파일러에서 분리 할 수있는 방법을 알고 있습니까?내 수업이 라이브러리 클래스와 간섭합니다

로더가 포함 된 주변에서 네임 스페이스를 만들려고했지만 라이브러리 구현에 오류가 발생했습니다.

모든 아이디어가 인정 될 것입니다.

편집 불행히도 내 프로젝트와 라이브러리에는 자체 네임 스페이스가 없습니다.

(해박함) 좋아요. 이클립스로 라이브러리를 제거하고 코드를 자동으로 리팩터링하여 해결했습니다. 하지만이 방법을 사용할 수 없다면 IDE에서 독립적으로 C++에서이 문제를 해결할 수 있습니까? -> 대답하지 않음

+2

네임 스페이스가 해결책입니다. 컴파일러/링커 오류가 발생하면 몇 가지 대표 코드를 포함하도록 질문을 편집해야합니다. 그러면 문제를 해결하는 데 도움을 줄 수 있습니다. –

+0

흠. 나는 라이브러리가 그것의 네임 스페이스에'Vector3' 클래스를 가지고 있다고 확신한다. 그렇지 않다면, 어쨌든 나쁘다. 해당 라이브러리에'namespace XXX;를 사용하고 있습니까? – Xeo

+4

@Xeo : OP가 자신의 클래스를 네임 스페이스에 넣었 으면 좋겠다. –

답변

7

편집 불행하게도 내 자신의 프로젝트. 라이브러리에는 네임 스페이스가 없습니다.

해결책은 분명합니다. 네임 스페이스에 프로젝트를 넣으십시오. 그리고 실제로 네임 스페이스가 없다면 :: Vector3로 라이브러리의 Vector3를 참조하십시오.

+0

도서관에서 직접 Vector3을 사용하지 않습니다. 도서관에서만 않습니다. 나중에 네임 스페이스를 추가하는 것은 매우 지루한 일이지만 아마도 유일한 방법 일 것입니다. – Nobody

0

생성 한 클래스 이름과 기본 클래스 앞에 프로젝트 네임 스페이스를 사용하십시오. 같은 :

에 MyProject :: 값 Vector3D

XXX :: 값 Vector3D 'xxx는'값 Vector3D 클래스에 내장되는 공간이다

+4

C++의 범위 연산자는'::'이 아니라'::'입니다. –

관련 문제