ошибка: не удается преобразовать «int *» в «Pt *» в назначении

Я новичок в использовании указателя и обнаружил ошибку компиляции 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 этого класса.

Спасибо за время, прочитав мои вопросы, любая помощь будет высоко ценится.

-1

Решение

Без определяемого пользователем конструктора вы можете инициализировать значение объекта следующим образом:

Pt a = Pt();

a является объектом типа Pt с этими int член установлен в 0,

Чтобы объявить массив, используйте:

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

N объекты в массиве инициализируются значением, поэтому следующее for петля больше не нужна.

Чтобы написать код C ++, просто сделайте

std::vector<Pt> Pa(N);
2

Другие решения

Вы не объявили ни один тип с именем T; Вероятно, у вас есть другие ошибки / предупреждения, прежде чем жаловаться на это.

0

У вас есть несколько ошибок


1) Pa[i] будет держать указатель на pt. так что подумайте Pa[i]->Ph


2) Что вы хотите здесь сделать, не ясно

Pa = new T[N];
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 для каждого экземпляра переменной, в отличие от других языков.

Я настоятельно рекомендую использовать больше букв для имен классов и переменных и постараться использовать что-то осмысленное. Две буквы набираются быстрее, но если это ваше оправдание, возьмите уроки игры на клавиатуре.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector