1

Python には、非常に便利なフラグ クラスがあります。私は c++ の初心者であり、この python 機能を c++ で複製することはできないようです。機能しなかった C++ コードを掲載するのではなく、複製しようとしているものを次に示します。テンプレート、仮想、または ??

要件は、クラスのメンバーを動的に変更できることです。Python では、クラスのdict要素を変更することで、これを可能にします。

パイソンでは:

import sys args = []

... sys.argv[] をループする keys:values で args[] をロードします ... 何とか何とか何とか

クラス フラグ:

def __ init __(self, **args):

自己。__ dict __.update(args)

次に、flag.dynamicproperty を有効にします

flag = Flag(**dict(args))

使用例: $ python script.py somedesc1 someval1 somedesc2 someval2

これにより、上記のようにコマンドラインからパラメーターを渡して、その場で任意の数のパラメーターを割り当て、somval1 を返す flag.property (例: flag.somedesc1) 呼び出しでアクセスできるようになります。 . これについて考えるもう 1 つの方法は、key:value プロパティを C++ クラスに動的に追加することです。

Python コードでの使用例:

if flag.somedesc1 != '10': someval1 を出力

同等のC ++を機能させることができないようです。私はポリモーフィズムを調べましたが、これらは動的に割り当てられ、クラスのプロパティとしてアクセスできる必要があります。

アイデア??? 確かにc ++でこれを行うことができますが、どこから始めればよいかわかりません。

4

2 に答える 2

0

いいえ、C++ ではできません。C++ では、クラスのメンバーはコンパイル時に 100% 定義されます。実行時に追加することはできません。C++ でこれを行う方法map<string,string>は、キーと値のペアを保持するメンバー変数をstring getVariable(string)用意し、そのキーのディクショナリに値を返す関数を用意することです。

于 2013-08-11T01:59:33.413 に答える