Я использую COM для связи между C++ & C#. Моя проблема заключается в том, что я реализовал метод, который содержит параметр как объект интерфейса &, который реализован C++ классом, который снова реализуется другим классом C++. мой код сценария в C# упоминается ниже:Интерфейс C#, унаследованный C++
namespace Example
{
public class First:ITest
{
void GetObjectOfC#Interface(ISample sample);
}
}
namespace Example
{
Interface ISample
{
void Test();
}
}
Класс Первый, а также интерфейс ITest эти ComVisible, Выставленный на C++ Via Com. Интерфейс ISample также отображается в COM, но не реализован C# классом First.
код сценария в C++:
Class SampleFirst: public Example::ISample
{
};
Этот класс SampleFirst снова наследуется другой файл C++ Class заголовка, как показано ниже:
Class SampleSecond:public SampleFirst
{
public:
void MakeAnObject();
private:
Example::ITestPtr _testPtr;
Example::ISamplePtr _samplePtr;
};
и в файле SampleSecond.Cpp,
void SampleSecond::MakeAnObject()
{
_testPtr.CreateInstance(__uuidof(Example::First));
samplePtr=this;
_testPtr->GetObjectOfC#Interface(samplePtr);
}
Здесь это означает тот же объект класса, присвоенный samplePtr, рассматривая Inheritanc Функциональность. , но в файле .tli, сбой HResult. Пожалуйста, дайте мне знать, если какое-либо решение для него.
[это] (http://stackoverflow.com/questions/1742848/why-exactly-do-i-need-an- явный-upcast-when-implementation-queryinterface-in-a/2812938 # 2812938) полезен для решения моей проблемы. – SkoolBoyAtWork