がDに精通していない、私はあなたの最初のコードスニペットはvalue = someValue
とname = someName
とopIndexAssign
を呼び出して終了することを前提とする必要がありますするつもりですか?
もしそうなら、それはC++で行うことができますが、そう簡単な方法ではできません。あなたは[]
演算子をオーバーロードし、次のようにカスタム=
演算子(非常に基本的な、不自然な例)でプロキシオブジェクトを返すことができます:強く前述/ウェル非常にきれいではないことを強調し
class MyProxy
{
public:
MyProxy (int& ref) : valueRef(ref) { }
MyProxy& operator = (int value) { valueRef = value; return *this; }
private:
int& valueRef;
};
class MyClass
{
public:
MyProxy operator [] (std::string name);
private:
int myVal;
};
MyProxy& MyClass::operator [] (std::string name)
{
if (name.compare("myVal"))
return MyProxy(myVal);
...
}
int main ()
{
MyClass mc;
mc["myVal"] = 10; // Sets mc.myVal to 10
}
は私がしたいです形成されたコード、ちょうどイラスト。それはテストされていません。
EDIT: Jeremiah !!!
出典
2011-02-09 20:41:27
Mac
ありがとう、それはトリックでした。私は実際に(ほとんど)完全にDコードの構文を模倣することができましたが、このコードはイテレータの乱用を使用していますが(主にちょうどそれがどのように行われているかを示すためです):http://codepad.org/YK6uDHDq - 私はupvoteを2回! –