2010-11-25 3 views
2

私はC StructsとC#クラスの両方で答えを見つけましたが、C++に関しては空白に戻ってきました。 編集:Cではできません。 C#ではGetProperties()メソッドです。C++クラスの属性をループ(パブリック)できますか?

コンテキスト:私はpublic属性を持つC++クラスを持っています(X、Y、Zを持つPointとしましょう)。これらの属性をUDP経由でJavaクライアントに送信したいと思います。私の考えは、3つの属性を持つバイト(char *)バッファを作成することでした(エンディアンの問題を処理しました)。

prepareForUdp(char * buffer) 
{ 
    int offset = 0; 
    int offsetValue = 4; 
    char tempBuffer[16]; 

    memcpy(tempBuffer, &X_, sizeof(X_)); 
    offset = offset + offsetValue; 
    memcpy(tempBuffer + offset, &Y_, sizeof(Y_)); 
    offset = offset + offsetValue; 
    memcpy(tempBuffer + offset, &Z_, sizeof(Z_)); 
    offset = offset + offsetValue; 

    memcpy(buffer, tempBuffer, sizeof(buffer)); 
} 

私はポイントが5、またはn番目の次元、第四を得ることができますので、私のインターフェースは、進化になりたい、と私は私のprepareForUdp()メソッドは(比較的)汎用的なものにしたいです。

私の質問は、どのように私の属性をループ(または反復)するのですか?

+1

Cの方法は何ですか? – lijie

+1

おそらく、あなたがCの構造体のためにあなたの '答え'を投稿したなら、それは答えと思われるものを照らしているかもしれません。私はあなたがCでそれを解決し、C++で同じことをする方法を見ることができません – Jamie

+0

それについては、Jamie、ごめんなさい。 Cの答えは「あなたはできません」...私は最初の投稿を編集します。 –

答えて

5

C++にはリフレクションはありません。だから、答えは、あなたはできません:)

+0

回避策はありますか? –

+1

@アイザック:あなたがしたいことを正確には、いいえ、そうではありません。どのようにしても、クラスの別のメンバーを反復することはできません。あなたはバイトを繰り返すことができますが –

+0

それは込み入ったです!あなたはそれを行うための記事やチュートリアルを教えてくれますか? –

2

ここではarticle on reflectionとはどのように対処する方法は、C + +はそれをしません。

+0

ありがとう、それは有益でした! –

+0

これは理論的に質問に答えるかもしれませんが、答えの本質的な部分をここに含め、参照のためのリンクを提供することが望ましいです(// meta.stackoverflow.com/q/8259)。 – Mgetz

関連する問題