0
A.h

class A  
{  
   private:
     static const int b = 50;
     int c[b];
 };

 A.cpp

 #include "A.h"
 const int A::b;

 C.cpp

 #include "A.h"

コンパイラは、b が複数回定義され、1 つが無視されるという警告を出します。配列を初期化する必要があるため、クラスで定義する必要があります。または、列挙型アプローチを使用してそれを行う必要があります。しかし、これが可能かどうか知りたかったのですか?

4

2 に答える 2

0

矛盾する定義を与えました。クラス定義内で変数に値を与えることで、それはストレージを必要としないコンパイル時の定数であると言えます。次に、.cpp ファイルにストレージを与えようとしています。

.cpp から取り出せば問題ありません。そのアドレスを取得しようとしないでください。

于 2011-04-09T02:42:29.213 に答える