내 보관소에 보관 된 일부 오래된 C++ 소스를 iOS로 이식하여 ObjC GUI를 제공하고 일부 C++ 항목에 래퍼를 사용하고 중요한 데이터를 남겨 둘 생각입니다. C++ 코드 내에서 작동합니다. 그래서, 문제는 오래된 소스가 Win32 MFC에서 문자열을위한 CString 클래스를 사용하고 있다는 것입니다. Joe O'Leary의 CStdString과 대체하려고합니다. C++ 템플릿 클래스는 괜찮습니다. 그러나 :하나 이상의 소스에있는 C++ 템플릿 클래스와 ObjC 및 C++ 믹싱
커다란 C++ 소스와 함께 문자열 클래스 정의를 사용해야하므로 각각 CStdString 템플릿이 자체적으로 포함됩니다. 일반적으로 전체 문자열 클래스에 대한 래퍼를 작성하지만, 필요가 없다면 더 좋습니다.
다른 소스에서 문자열의 인스턴스화에 문제가 있습니까? 한 소스에서 다른 소스로 템플릿 문자열을 전달하는 것이 문제가 될 수 있습니까? 컴파일러가 동일한 인스턴스화 유형이 템플릿에 사용된다는 사실을 가지고 한 번만 또는 여러 번 템플릿에 대한 코드를 생성하는지는 실제로 알 수 없습니다.
약간의 빛을 채울 수 있습니까? 그들은 잠재적 창 이외의 플랫폼에서 사용되는 라이브러리의 어떤 종류의 퍼팅에 좋은 후보가되지 않도록
감사합니다 ...
안녕하세요 Mr.Gando, 정말 좋아 보입니다 :-) CStdString의 기본 클래스 인 std :: string은 실제로 동일한 프로젝트 내의 다른 소스에 포함될 수 있으며 그 코드는 한 번만 빌드됩니다. - 귀하의 마지막 조언 : 오케이, 그동안 Obj-C에 대해 잘 알고 있습니다. 그러나 그 것이 C++ 코드의 많은 양을 다시 작성하고자 함을 의미하지는 않습니다 :-) – konran
동의합니다. 이식성 또한 좋은 주장. xcode 프로젝트에서 CString을 삭제하고 어떤 일이 발생하는지 확인할 수 있습니다. 윈도우즈에 의존성이 있다면 물건이 잘못 될 수 있습니다. 어떻게 진행되는지 알려주세요. – Goles
좋아요, 예를 들어 멀티 파일링 된 템플릿에 주석 처리되지 않은 부분이 있습니다 ;-) 내 테스트에는 많은 cpp 소스가 포함되지 않았으므로 시간이 더 걸립니다. 지금까지 컴파일러 오류가없고 누수 (Analyzer & Instruments)가없는 typedef'd CString을 삭제할 수 있으며 이렇게 좋은 결과를 얻을 수 있다고 말할 수 있습니다. : - : : .thgir ot tfel morf gnirts lamron a si siht – konran