我有这样的裁判等级:如何用集合初始化初始化C++/cx类?
namespace N
{
public ref class S sealed
{
public:
property Platform::String^ x;
};
}
如何与聚合初始值初始化它的地方吗? 我曾尝试:
N::S s1 = { %Platform::String(L"text") };
但是编译器说
错误C2440: '初始化':无法从 '初始化列表' 转换为 'N :: S'
另外:
N::S s1 { %Platform::String(L"text") };
并且错误是:
错误C2664: 'N ::的s :: S(const的ñ:: S%)':不能从 '平台::字符串^' 转换参数1至 'const的ñ:: S%'
这与标准C++这样的工作很大:
struct T
{
wstring x;
};
T x { L"test" };
我不想在这里使用一个构造函数。
您的ref类是一个interop类型,该属性实际上并不是该类中的字段。对于一个C++程序员来说,只需简单的语法糖。但它需要调用一个函数(set_x)来初始化该值,与初始化程序列表不兼容。您需要's1.x =“test”;',编译器自动创建Platform :: String并将其转换为接口方法调用。 –