은 템플릿 기반 클래스에서 파생 된 C++/CLI에서 B입니다. 의 인스턴스가 있고 그 인스턴스에서 메서드를 호출하려고하는 C# 코드가 있습니다. 메서드가 A에 구현 된 경우 모두 정상입니다. B에 구현 된 경우 이상하게 보입니다.템플릿 기반 C++/CLI 기본 클래스의 C#에서 메서드 호출
C++/CLI를 :
나는 내가 뭘하려고 오전 보여주는 간단한 코드를 노크
template<typename T>
public ref class B
{
public:
void Test(){}
};
public ref class A : public B<System::Int32> { };
C 번호 :이 테스트 코드에서
A a = new A();
a.Test();
, Test()
에 대한 호출 컴파일하지 않습니다 ("테스트"에 대한 정의가 없습니다). Test()
을 정적으로 수정하면 동일한 결과가 나타납니다 (인스턴스가 아닌 A). 그것이 그 이야기의 끝 부분이라면 나는 단지 마이크로 소프트에게 나의 주먹을 흔들고 그것과 함께 살 것이다.
그러나 실제 코드에는 Test()
에 해당하는 기능이 있습니다! 기괴한 것은 한 가지 경우에만 작동합니다. 작업 방법을 복사하고 이름을 변경하면 새 방법에 다시 도달 할 수 없습니다.
다른 곳에서 가져온 이름을 제외하려면 작업 방법을 제거해 보았습니다. 코드가 예상대로 빌드되지 않습니다.
나는 아직도 내가보고있는 것이 결함이고 내가하려는 것은 지원되지 않는다고 생각합니다. 그러나 나는 그것을 배제하는 어떠한 참고 문헌도 발견 할 수 없기 때문에 내가 바라는 이상 현상과 함께 내가 무엇을 기대해야 하는지를 확실히 알고 싶다.
사용해보십시오. 당신이 그것에 대해 생각할 때 아주 분명합니다. 이제 그 문제를 해결할 수 있습니다. 신속한 답변 주셔서 감사합니다. – philsquared