从C++/CLI 托管访问 C# 重载方法
Access C# overloaded method from C++/CLI managed
我有带接口的 C# 类库
public interface IInterface
{
public IObject Get(SomeClass a);
public IObject Get(SomeClass a, SomeClass1 b);
public IObject Get(SomeClass a, SomeClass2 c);
}
在我的C++托管代码中,我需要使用 SomeClass2 arg 调用第三种方法。但是VS给我显示一个错误
cannot convert parameter 2 from 'SomeClass2 ^' to 'SomeClass1 ^'
是否可以从C++调用重载方法?
我这样做没有任何问题(不能把它放在评论中):
namespace ClassLibrary1
{
public class SomeClass {}
public class SomeClass1 {}
public class SomeClass2 {}
public interface IInterface
{
object Get(SomeClass a);
object Get(SomeClass a, SomeClass1 b);
object Get(SomeClass a, SomeClass2 c);
}
public class Implementation : IInterface
{
public object Get(SomeClass a)
{
return null;
}
public object Get(SomeClass a, SomeClass1 b)
{
return null;
}
public object Get(SomeClass a, SomeClass2 c)
{
return null;
}
}
}
和 C++/CLI 代码
using namespace System;
using namespace ClassLibrary1;
int main(array<System::String ^> ^args)
{
auto o = gcnew Implementation();
o->Get(gcnew SomeClass());
o->Get(gcnew SomeClass(), gcnew SomeClass1());
o->Get(gcnew SomeClass(), gcnew SomeClass2());
Console::WriteLine(L"Hello World");
return 0;
}
编译没有问题。
其中一个
参数是 System::D ateTime 的问题,它是值类型,在我的代码中我将其声明为引用
System::Date^ date = ...
当我更改它时,它确实是值类型,可以调用任何方法。为什么它调用没有任何问题的方法与引用类型日期时间我不知道
相关文章:
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- 从纯虚拟类 (A) 派生的指针无法访问来自纯类 (B) 的重载方法
- C++:使用 std::unique_ptr 访问重载运算符++的最佳方式?
- 如何从派生类访问基类中的重载运算符?
- 用于多维数据访问的重载 () 运算符
- 重载<<无法访问继承的私有数据
- 运算符重载函数无法访问私有成员
- 运算符重载(使用binaray friend函数)类没有成员,并且成员不可访问
- 为什么无法访问基类的函数重载
- C++模板方法重载和具有多态性的类访问
- C++重载友元函数无法访问私有成员
- 赋值运算符重载在通过指针访问时不调用
- 尝试访问类的私有成员以消除重载是否格式不正确
- 如何通过运算符<<的重载访问受保护的功能?C++
- 重载'->'成员访问运算符
- C++模板如何重载运算符和访问私有财产
- 从C++/CLI 托管访问 C# 重载方法
- C++ 从数组访问重载构造函数
- boost::变体.Boost::访问重载函数
- 访问重载的模板函数