2013-12-06 3 views
0

Мой профессор программирования запрошенные что мы:C++ указатели с классами

  • объявить указатель и переменную Grade
  • магазин адрес переменной в указателе переменной
  • вызова соответствующих функций для печати на выходе. (Обратитесь к функциям, используя нотацию указателя, например, функцию ptr->())

Однако я немного смущен. Переменная «Grade» является переменной класса, но как объявить указатель? Я объявляю указатель как int?

Так что я бы что-то вроде:

int *ptr; 
Grade grade; 
ptr = &grade; 
+1

Оценка * ptr; Класс оценки; ptr = &grade; ptr-> function(); – thang

+0

Покажите нам презентацию от вашего профессора. Что говорит текст? –

ответ

2

Вы очень близки. Но вы указали указатель на целое число. Это то, что означает int *. То, что вы хотите, это указатель на Grade:

Grade* ptr; 

Остальная часть того, что вы написали выглядит правильно до сих пор.

После того как вы ptr = &grade;, вы можете вызывать методы grade говоря ptr->foo() вместо grade.foo(). Оба вызовут метод foo() по переменной grade.

+0

У меня было это, тогда я удалил его. Однако, спасибо. Указатели всегда меня немного путают. Это потому, что, если я объявляю его int, он будет указывать только на память sizof (int), а не на мой класс? – WorldDominator

+0

@WorldDominator '* int' означает: Сохраняет адрес переменной' int'. –

+0

С 'int *', вы сообщаете компилятору, что указатель указывает на 'int'. Итак, если вы попытаетесь разыменовать его, компилятор просто даст вам «int», а не ваш объект. Если указатель случайно указал на ваш объект, «int», который вы получите, когда вы разыгрываете указатель, вполне может быть тарабарщиной. В общем, вы должны убедиться, что тип указателя, который у вас есть, совместим с вещью, на которую указывает указатель. –

0

объявить указатель на тип

это все дни
type * ptr; 

в вашем случае:

Grade *ptr; 
Grade grade; 
ptr = &grade; 
// use 
ptr->function(); 

, что вы сделали это указатель на Int.

0

Если вы хотите указатель на класс T, просто напишите T* foo, как и следовало ожидать. Итого всего:

//Declare Pointer and grade Variable: 
Grade grade; 
Grade* ptr; 

//Store variable's address in pointer: 
ptr = &grade; 

//Call function: 
ptr->function(); 
+0

Я думаю, вы имеете в виду 'T * foo;' – user1810087

+0

просто напишите класс * T или напишите T *? – thang

Смежные вопросы