-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 提供一个内存空间。

感谢您花时间阅读我的问题,任何帮助将不胜感激。

4

4 回答 4

2

如果没有用户定义的构造函数,您可以像这样对对象进行值初始化:

Pt a = Pt();

a是一个类型的对象,Ptint成员设置为0.

要声明一个数组,请使用:

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

数组中的对象是值初始化的,因此不再需要N以下循环。for

要编写 C++ 代码,只需执行

std::vector<Pt> Pa(N);
于 2012-11-12T20:18:16.273 回答
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 回答
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为每个变量实例使用。

我强烈建议为你的类和变量名使用更多的字母,并尝试使用一些有意义的东西。两个字母打字速度更快,但如果这是你的理由,请参加键盘课程。

于 2012-11-12T20:30:38.470 回答