2017-12-20 3 views
0

で定義されたすべての文字列を印刷するには、私が持っていると仮定しますリフレクション - クラス

#include <iostream> 
class Greeter 
{ 
public: 
    void printEm() {...} 
private: 
    std::string a = "Hello!"; 
    std::string b = "Hi!"; 
    int IAmNotAString = 0; 
}; 

何グリーターで定義されたすべての文字列を印刷するprintEmを取得するための最も簡単な方法で、さらに、誰かが定義する必要があります新しい文字列、それも印刷しますか?どのブーストライブラリでも問題ありません。私はFusionでいくつかの経験がありますが、どのメンバーが文字列かを自動的に推測する方法はわかりません。

+0

私は理解できないと思いますが、クラスには2つの文字列しかありませんか?現在のクラスに新しい文字列を追加する方法はありますか?私は配列やリストが必要だと思います。そして、それらをすべて印刷し、配列、リストを反復するだけで、追加が解決されます。 – Angen

+0

50文字列を想像してみましょう。実際には関数です。開発者はそれらを追加して削除します。そして、この怪物を自動的に処理する巨大なマクロがあります。 – Carbon

+0

そう、人生はそうです。 – Carbon

答えて

1

C++には反射がありません。マクロでこれを行う場合は、特別に細工されたマクロを使用してメンバー変数を定義する必要があります。簡単な考え方は、各マクロがメンバを内部ベクトルに追加することであり、printEmはこのベクトルを反復するだけです。これは最も洗練されたソリューションではありませんが、さまざまなライブラリがどのように機能するかです。

関連する問題