C++/CLI -- 访问结构成员

C++/CLI -- Access Structure Member

本文关键字:结构 成员 访问 CLI C++      更新时间:2023-10-16

我正在尝试访问 .NET 结构成员,但即使对于这个简单示例,编译也失败:

.h:

using namespace System::Drawing;
namespace MyNamespace{
public ref class MyClass{
public:
MyClass();
static const System::Drawing::Size MinimumSize = System::Drawing::Size(20,20);
}
}

。.cpp:

#include "MyInclude.h"
MyClass::MyClass(){
int i = MinimumSize.Width;
// .....
}

将 MinimumSize.Width 分配给局部变量 i 的语句编译失败:

  • "没有函数"System::D rawing::Size::Width::get(("的实例与参数列表和对象匹配(对象具有阻止匹配的类型限定符(对象类型为 const System::D rawing::size

当我删除声明中的"const"时,赋值编译没有错误,但我想保持值公开和只读。

有人可以给我一个提示如何指定吗?

我刚刚尝试过:"initonly"在我尝试将MinimumSize.Width分配给"i"时会产生两条消息:

  • 警告 C4395 'System::D rawing::Size::Width::get':成员函数将在 initonly 数据成员 'MBcppLibrary::D rForm::MinimumSize' 的副本上调用(如 德米特里·诺金/汉斯·帕桑特(

加上消息

  • "不允许获取 initonly 字段的地址">

我正在使用这个解决方案:

  1. 只需保留"静态常量"声明
  2. 将类型强制转换应用于赋值语句
int i = (( System::Drawing::Size)MinimumSize).Width;

此强制转换摆脱了"const",编译时没有任何错误/警告,并按预期执行。还是这有点太用力了?

问候保罗黑客