2012-03-02 5 views
0

으로 반환합니다. 추상 구조체에 대한 포인터를 반환하는 C++ DLL이 있습니다.이 클래스는 기본 클래스의 인터페이스를 숨 깁니다. DLL은 하나의 함수 인 getInstance를 내 보냅니다. getInstance는이 추상 구조체를 상속 한 C++ 구조체의 객체를 생성하고 추상 구조체 유형에 대한 포인터로 반환합니다.추상 C++ struct를 C#

지금까지 내가 추상적 인 구조체를 허용하지 않는 C 번호를 찾을 수 있습니다, 그리고 당신은 C# 클래스에 대한 포인터를 가질 수 없습니다, 그래서 C#

에 C++에서이 구조체를 얻기의 방법을 생각할 수 없기 때문에

감사합니다.

+0

C++ 구조체는 C++ 클래스와 비슷하지만 실제 차이점은 없습니다 (적어도 C++/C# interop는 ...). 구조체로 무엇을하고 싶습니까? 메소드 호출? – zmbq

+0

예 GetInstance는 GetInstance에 의해 반환되는 C++ 추상 구조체와 동일한 정의로 구조체를 선언해야하므로 GetInstance는 해당 구조체 형식의 포인터를 반환합니다. –

+0

@ jalf의 대답을 참조하십시오. – zmbq

답변

3

C++에서 구조체와 클래스는 동일합니다. 유일한 차이점은 다른 액세스 지정을 기본값으로한다는 것입니다 (struct는 기본적으로 public을 사용하고 class는 private를 기본값으로 사용함).

그래서 추상적 인 C의 ++ 구조체는 C# 클래스하지 구조체된다.

+0

C#에서는 클래스에 대한 포인터를 가질 수 없지만 맞습니까? –

+0

안전하지 않은 코드를 파헤 치지 않는 한 C#은 일반적으로 포인터를 가지고 있지 않습니다. 하지만 당신이하려는 것을 정말로 이해하지 못합니다. 왜 C#에서 포인터가 필요하다고 생각합니까? – jalf

+0

그것이 C++ DLL이 반환하는 것이기 때문에 추상 클래스 나 구조체의 인스턴스를 C++로 반환 할 수 없기 때문에 포인터 여야합니다. –

관련 문제