我有這樣的裁判等級:如何用集合初始化初始化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並將其轉換爲接口方法調用。 –