-1

ポインタの使用法に不慣れで、コンパイルエラーgccが発生しました

これが私のコードです:

class Pt
{

public:

    int Ph;

};

Pt *Pa;

Pa = new T[N];
for(int i=0;i < N; i++) 
    Pa[i].Ph=0;`

およびエラーメッセージ:

error: expected type-specifier before ‘T’
error: cannot convert ‘int*’ to ‘Pt*’ in assignment

私がやろうとしているのは、int最初は0であるを含むクラスを宣言し、そのクラスのNにmemスペースを提供することです。

私の質問を読んでくれてありがとう、どんな助けでも大歓迎です。

4

4 に答える 4

2

ユーザー定義のコンストラクターがなくても、次のようにオブジェクトを値で初期化できます。

Pt a = Pt();

aPtメンバーがにint設定されたtype のオブジェクトです0

配列を宣言するには、次を使用します。

Pt* Pa = new Pt[N]();

配列内のNオブジェクトは値で初期化されるため、次のforループは不要になります。

C++ コードを記述するには、次のようにします。

std::vector<Pt> Pa(N);
于 2012-11-12T20:18:16.273 に答える
0

次のようなものを試してください。

class Pt
{
  public:
    Pt() : Ph(0)
    { ; }

    int Ph;
};

#define CAPCITY 15U

int main(void)
{
  Pt Pa[CAPACITY];
  for (unsigned i = 0; i < CAPACITY; ++i)
  {
      std::cout << "Pa[" << i << "].Ph = " << Pa[i].Ph << endl;
  }
  return EXIT_SUCCESS;
}

クラスが配列によって構築されるときにフィールドをゼロにclass Pt設定するハンドルの初期化子リスト。Ph

newところで、他の言語とは異なり、変数インスタンスごとに使用する必要はありません。

クラス名と変数名にもっと多くの文字を使用し、意味のあるものを使用することを強くお勧めします。2文字の方が入力が速くなりますが、それが正当な理由である場合は、キーボードのクラスを受講してください。

于 2012-11-12T20:30:38.470 に答える
0

と呼ばれる型を宣言していませんT。おそらく、それについて不平を言う前に、他のエラー/警告があります。

于 2012-11-12T20:20:28.560 に答える
0

複数の間違いがあります


1) Pa[i]pt へのポインターを保持します。だから書くことを検討してくださいPa[i]->Ph


2)ここで何をしたいのか明確ではありません:

Pa = new T[N];
于 2012-11-12T20:25:25.907 に答える