gcc 4 및 cmake를 사용하여 GNU/Linux 용 응용 프로그램을 개발하고있어 컴파일 프로세스를 관리하고 있습니다.Visual C++ 2008 Express - cpp 파일 충돌
.
|-- gfx
| |-- Object.cpp
| `-- Object.h
`-- logic
|-- Object.cpp
`-- Object.h
첫 번째 개체 클래스는 GFX 네임 스페이스에 있고 두 번째 논리 네임 스페이스 : 그 이름이 같은 그러나이 같은 다른 디렉토리와 네임 스페이스에 두 개의 파일이있을 때 아무런 문제가없는 것입니다 발견했다.
그런 다음 Visual C++ 2008 Express Edition을 사용하여이 프로젝트를 컴파일하려고했습니다. 링커는 존재하지 않는 Gfx :: Object 클래스 구현에 대해 몇 가지 오류를 던졌습니다.
- 비주얼 C++가 Object.cpp 파일의 두 변화가 첫 번째 또는 두 번째 파일에 발생하면 개체 단위의 재 컴파일이 대기
- 는
- 그것은 항상 단지를 재 컴파일 추적 : 몇 가지 검사 후에 나는 것을 발견 어떤 파일이 실제로 수정되었는지에 관계없이 두 번째 Object.cpp
나는 또한 Visual C++에서 동일한 이름의 두 클래스를 만들 수 없다는 것을 알게되었습니다.
해결 방법은 있습니까? 나는 코드의 꽤 큰 부분을 리팩터링하고 싶지는 않다.
동일한 범위에있는 동일한 이름의 두 클래스는 어떤 경우에도 잘못되었습니다. 별도의 네임 스페이스에 있거나 컴파일 단위를 구분하기 위해 로컬 화되어야합니다. 컴파일러, 링커 또는 IDE가 이에 대해 불평하고 있습니까? 당신은 아마도 당신이 가진 동일한 진단 정보를 볼 수 있도록이 빌드 로그를 추가해야 할 것입니다. – Clifford
그는 구체적으로 그가 다른 네임 스페이스에 있다고 말합니다. 그렇지 않습니다. –
@ Clifford, Pavel 예, 클래스는 별도의 네임 스페이스에 있으므로이 경우는 유효해야합니다. 이것은 IDE가이 상황과 혼동을 일으키고 하나의 Object.cpp를 다른 것으로 구분할 수없는 것처럼 보입니다. –