【发布时间】:2011-07-19 06:24:20
【问题描述】:
我读过 C++/CLI ref class 相当于 C# 类。但是,我发现每个班级中 this 之间存在差异。
编辑:我从 Visual Studio 2010 的本地人那里获得了 this。 (此外,我注意到在编译时进行完全相同的转换时存在差异 - C++/CLI 类给出了一个错误,指出它无法将 Object^ 转换为 MyClass^,而使用 C# 类进行转换在编译时不会产生错误)。
C# 类:
namespace MyNamespace
{
public class MyClass
{
public MyClass()
{
//Do something
}
}
}
this = MyNamespace.MyClass(我期望和想要的!)
C++/CLI ref class:
namespace MyNamespace
{
public ref class MyClass
{
public:
MyClass::MyClass()
{
//Do something
}
}
}
this = System::Object^(不是我所期望或想要的!!)
我希望 this 类似于 C# 示例,其中指出 this 的类型为 MyClass。但是,C++/CLI ref 类声明它的类型为Object.. 这绝对不是我想要的。
(这使得它在各种情况下变得困难,例如在 C++ 函数中进行强制转换)。
所以我的问题是(两部分):
a) 为什么这些类的行为与 this 不同?
b) 如何让我的 C++/CLI 引用类在 this 中具有正确的类型??
提前感谢您的宝贵时间!
【问题讨论】:
-
如何查看
this是什么类型? -
您没有提供任何相关代码向我们展示您如何使用
this -
@svick:来自 Visual Studio 2010 的本地人
-
@Yochai Timmer:我更新了我的问题以反映我通过查看 VS 中的本地人获得了
this。 -
为此添加实际代码怎么样?例如,您可以打印到控制台。调试器有时会表现得很奇怪。