0
是否可以創建類屬性的句柄(或跟蹤句柄)?例如,創建類屬性的句柄
System::Windows::Forms::CheckBox^ Box = gcnew System::Windows::Forms::CheckBox()
我想創建一個句柄箱的Checked屬性,並用它來訪問和修改相同。
是否可以創建類屬性的句柄(或跟蹤句柄)?例如,創建類屬性的句柄
System::Windows::Forms::CheckBox^ Box = gcnew System::Windows::Forms::CheckBox()
我想創建一個句柄箱的Checked屬性,並用它來訪問和修改相同。
屬性只是語法糖的set/get方法,並且AFAIK沒有辦法捕獲任何類型的引用(類似於綁定方法,我想)。
我能想到的最好的解決方法,這需要VS2010,是通過一對夫婦的lambda表達式的周圍:
auto set = [=](bool b) { Box->Checked = b; };
auto get = [=]() -> bool { return Box->Checked; };
EDIT(因爲你沒有VS2010):
你可以的當然,恢復到寫一個特殊用途類的,而更多的巴洛克約定:
public generic<typename T> interface class PropertyProxy
{
property T Field;
};
public ref class CheckBoxChecked : public PropertyProxy<bool>
{
public:
CheckBoxChecked(System::Windows::Forms::CheckBox^ box) : _box(box) { }
property bool Field
{
bool get() { return _box->Checked; };
void set(bool b) { _box->Checked = b; };
}
private:
System::Windows::Forms::CheckBox^ _box;
};
如果有人問你什麼C++ lambda表達式是良好的,很難去過去的這個例子。
我明白了。恐怕這不是一個選項。我想我會等待另一個答案來確認/反駁你的。感謝您的快速回答。 – shadeMe 2010-05-01 06:33:58
啊,那應該會幫助我度過這個夜晚。非常感謝! – shadeMe 2010-05-01 13:41:53