C ++에서 라이브러리간에 유사한 클래스를 변환하는 가장 좋은 방법은 무엇입니까?

스테판 바우어

나는 glmBox2D라이브러리 를 사용하는 프로젝트를 진행하고 있습니다. 둘 다 예를 들어 2D 벡터의 구현을 포함합니다. 때로는 한 라이브러리의 형식에서 다른 형식으로 값을 변환해야합니다. 라이브러리 소스 코드를 수정해야하기 때문에 클래스에 적절한 생성자를 작성할 수는 없습니다. 여러 가지 이유로 나쁜 생각입니다.

이제 명백한 해결책은 예를 들어 서로를 변환하는 유틸리티 함수를 작성하는 것입니다. convertVec2(). 이것은 작동합니다. 그러나 그것은 약간 투박하고 장황하며, 모호한 언어 기능의 교활한 사용을 사용하여 더 똑똑한 방법이 있는지 궁금합니다.

문제를 해결하는 더 좋은 방법이 있습니까? 아니면 그냥 지루하고 간단한 일을해야합니까?

Eerorika

명백한 해결책은 하나를 다른 것으로 변환하는 유틸리티 함수를 작성하는 것입니다.

그냥 지루하고 간단한 일을해야합니까?

예, 이것은 괜찮은 접근 방식입니다.

레이아웃과 호환되는 유형의 특수한 경우에는 하나에 대한 포인터를 다른 유형에 대한 포인터로 간단히 재 해석 할 수 있습니다.

요컨대, 유형이 동일한 유형이거나 둘 다 표준 레이아웃 클래스이고 각 클래스의 모든 멤버가 다른 클래스의 해당 멤버와 레이아웃 호환되는 경우 유형은 레이아웃 호환 가능합니다. 예를 들어 다음 클래스는 레이아웃과 호환됩니다.

struct Vec2D {
    float x, y;
};


struct Point {
    float X, Y;
};

C ++ 20부터는 trait 유형으로 테스트 할 수 있습니다 std::is_layout_compatible.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

한 Swift 클래스에서 다른 클래스로 변수를 전달하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

MVC4와 클래스 라이브러리간에 세션을 공유하는 가장 좋은 방법

분류에서Dev

데코레이터를 사용하는 것과 유사한 C #에서 코드를 생성하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

여러 사용자간에 강력한 워크 스테이션의 리소스를 공유하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Win7에서 USB 드라이브를 공유하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

C ++에서 클래스의 객체를 복사하는 가장 좋은 방법

분류에서Dev

C ++에서 PayPal 적응 형 결제 API를 사용하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

문자열을 dict로 변환하는 것과 같은 작업에 python ast 라이브러리를 사용하는 것이 가장 좋은 방법입니까?

분류에서Dev

이 라이브러리의 모든 참조와 함께 클래스 라이브러리에 대한 참조를 추가하는 방법은 무엇입니까?

분류에서Dev

C #에서 변경 불가능한 클래스를 작성하는 방법은 무엇입니까?

분류에서Dev

스레드를 사용하지 않고 Windows에서 여러 클라이언트 연결을 처리하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

C ++ 파생 클래스의 인스턴스를 복사하는 가장 좋은 방법은 무엇입니까

분류에서Dev

Java에서 기본 래퍼 클래스를 만드는 가장 좋은 방법은 무엇입니까?

분류에서Dev

브라우저에서 고유 ID를 유지하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

컨트롤러간에 범위 변수를 공유하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

사용자에게 클래스 a에 2 개의 정수를 입력하고 클래스 b에 추가하고 클래스 C에 표시 기능을 갖도록 요청하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

C ++에서 이동할 변수를 전달하려는 경우 가장 좋은 방법은 무엇입니까?

분류에서Dev

C ++에서 가장 좋은 방법으로 클래스 멤버 벡터의 요소를 반복하는 방법은 무엇입니까?

분류에서Dev

C ++의 함수에서 벡터를 반환하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

클라이언트 측에서 C DLL을 실행하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Qt 객체 (QgraphicsItem)를 C ++ 클래스 객체로 변환하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

C #에서 종속성 (예 : 클래스 라이브러리 또는 개별 파일)이있는 프로젝트를 설정할 때 가장 좋은 방법은 무엇입니까?

분류에서Dev

winforms c #에 문화 세계화를 사용하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

C ++에서 클래스를 인스턴스화하는 가장 선호되는 방법은 무엇입니까?

분류에서Dev

클래스 기반보기에 대한 URL을 얻는 가장 좋은 방법은 무엇입니까?

분류에서Dev

C ++에서 대용량 데이터를 처리하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

C ++에서 단일 클래스를 동적으로 할당하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Chef에서 "유틸리티"리소스를 설정하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

사용자 입력 전에 "텍스트 유지"를하는 가장 좋은 방법은 무엇입니까?

Related 관련 기사

  1. 1

    한 Swift 클래스에서 다른 클래스로 변수를 전달하는 가장 좋은 방법은 무엇입니까?

  2. 2

    MVC4와 클래스 라이브러리간에 세션을 공유하는 가장 좋은 방법

  3. 3

    데코레이터를 사용하는 것과 유사한 C #에서 코드를 생성하는 가장 좋은 방법은 무엇입니까?

  4. 4

    여러 사용자간에 강력한 워크 스테이션의 리소스를 공유하는 가장 좋은 방법은 무엇입니까?

  5. 5

    Win7에서 USB 드라이브를 공유하는 가장 좋은 방법은 무엇입니까?

  6. 6

    C ++에서 클래스의 객체를 복사하는 가장 좋은 방법

  7. 7

    C ++에서 PayPal 적응 형 결제 API를 사용하는 가장 좋은 방법은 무엇입니까?

  8. 8

    문자열을 dict로 변환하는 것과 같은 작업에 python ast 라이브러리를 사용하는 것이 가장 좋은 방법입니까?

  9. 9

    이 라이브러리의 모든 참조와 함께 클래스 라이브러리에 대한 참조를 추가하는 방법은 무엇입니까?

  10. 10

    C #에서 변경 불가능한 클래스를 작성하는 방법은 무엇입니까?

  11. 11

    스레드를 사용하지 않고 Windows에서 여러 클라이언트 연결을 처리하는 가장 좋은 방법은 무엇입니까?

  12. 12

    C ++ 파생 클래스의 인스턴스를 복사하는 가장 좋은 방법은 무엇입니까

  13. 13

    Java에서 기본 래퍼 클래스를 만드는 가장 좋은 방법은 무엇입니까?

  14. 14

    브라우저에서 고유 ID를 유지하는 가장 좋은 방법은 무엇입니까?

  15. 15

    컨트롤러간에 범위 변수를 공유하는 가장 좋은 방법은 무엇입니까?

  16. 16

    사용자에게 클래스 a에 2 개의 정수를 입력하고 클래스 b에 추가하고 클래스 C에 표시 기능을 갖도록 요청하는 가장 좋은 방법은 무엇입니까?

  17. 17

    C ++에서 이동할 변수를 전달하려는 경우 가장 좋은 방법은 무엇입니까?

  18. 18

    C ++에서 가장 좋은 방법으로 클래스 멤버 벡터의 요소를 반복하는 방법은 무엇입니까?

  19. 19

    C ++의 함수에서 벡터를 반환하는 가장 좋은 방법은 무엇입니까?

  20. 20

    클라이언트 측에서 C DLL을 실행하는 가장 좋은 방법은 무엇입니까?

  21. 21

    Qt 객체 (QgraphicsItem)를 C ++ 클래스 객체로 변환하는 가장 좋은 방법은 무엇입니까?

  22. 22

    C #에서 종속성 (예 : 클래스 라이브러리 또는 개별 파일)이있는 프로젝트를 설정할 때 가장 좋은 방법은 무엇입니까?

  23. 23

    winforms c #에 문화 세계화를 사용하는 가장 좋은 방법은 무엇입니까?

  24. 24

    C ++에서 클래스를 인스턴스화하는 가장 선호되는 방법은 무엇입니까?

  25. 25

    클래스 기반보기에 대한 URL을 얻는 가장 좋은 방법은 무엇입니까?

  26. 26

    C ++에서 대용량 데이터를 처리하는 가장 좋은 방법은 무엇입니까?

  27. 27

    C ++에서 단일 클래스를 동적으로 할당하는 가장 좋은 방법은 무엇입니까?

  28. 28

    Chef에서 "유틸리티"리소스를 설정하는 가장 좋은 방법은 무엇입니까?

  29. 29

    사용자 입력 전에 "텍스트 유지"를하는 가장 좋은 방법은 무엇입니까?

뜨겁다태그

보관