문제

처음부터 새로운 .NET C ++ 프로젝트를 구축하려고합니다. 이 프로젝트에서 관리 및 관리되지 않은 코드를 혼합 할 계획입니다.

이 포럼 스레드IdataObject : 모호한 기호 오류 내가 여러 번 본 문제에 대한 답변.

Post #4는 "네임 스페이스 xxxx를 사용하여 모든 것을 움직입니다.

이것은 좋은 아이디어처럼 보이지만 이제 내 헤더 파일에서 .NET Framework에서 매개 변수를 참조해야합니다.

void loadConfigurations(String^ pPathname);

.CPP 파일의 문을 사용하여 어떻게 움직여야하고 .h 파일의 네임 스페이스를 사용해야합니까?

도움이 되었습니까?

해결책

헤더 파일에서 항상 자격을 갖춘 이름을 사용하는 것이 좋습니다. 때문에 using 명령문은 다음과 같은 모든 코드에 영향을 미칩니다 #include, a using 헤더 파일의 명령문은 해당 헤더를 포함 할 수있는 모든 사람에게 영향을 미칩니다.

따라서 헤더 파일의 기능 선언을 다음과 같이 변경합니다.

void loadConfigurations(SomeNamespace::String^ pPathname);

Somenamepace가 네임 스페이스의 이름 인 곳 using 이전에.

다른 팁

.NET에 대해 많이 알지 못하므로 내 대답은 귀하의 질문의 관리되지 않는 C ++ 부분에만 적용됩니다. 개인적으로 이것은 "네임 스페이스 xxxx를 사용하는"전염병을 피하는 주된 이유 중 하나입니다. 진술.

나는 "std :: cout <<"hello world "<< std :: endl;"과 같은 네임 스페이스를 선호합니다.

이것은 네임 스페이스 충돌을 피하고 무언가가 어디에서 왔는지에 대한 모호성은 없습니다. 또한 "네임 스페이스 STD 사용"과 같은 일을 할 때; 당신은 네임 스페이스가 당신에게주는 것을 취소하고 있습니다. 그들은 충돌을 피하고 모든 것을 글로벌로 가져 오면 충돌을 다시 초대하도록 설계되었습니다.

이것은 엄청나게 의견과 취향의 문제입니다.

헤더에서해야 할 일에 관해서는, 나는 다음과 같은 내용을 씁니다. "void f (const std :: string & s);"

이를 해결하기 위해 .h 파일 에서이 작업을 수행했습니다.

namespace TestClassNS
{
  class TestClass;
}

그런 다음 .cpp 파일에서 #H를 테스트 스CASS에 포함시키고 NamestPaceTestClassns를 사용하여 #in을 포함시킵니다.

내 C ++가 녹슬으므로 더 나은 방법이있을 수 있습니다.

내 경험상 조심해야 할 유일한 네임 스페이스는 시스템 자체입니다. 가장 일반적이고 가장 중요한 것은 문제를 찾는 곳이라는 것이 다소 성가신 일입니다. 그러나 그것은 삶입니다.

최소한 관리 클래스를 작성하는 경우 관리되지 않는 클래스의 헤더 파일 문제와 달리 Assembly Barrier에서 포함 된 문제가있는 문제가 있다는 편안함을 취할 수 있습니다.

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