#c #pointers
#c #указатели
Вопрос:
Учитывая следующий код:
#include <iostream>
using namespace std;
class CRectangle {
public:
int *width, *height;
CRectangle (int,int);
~CRectangle ();
int area () {return (*width * *height);}
};
CRectangle::CRectangle (int a, int b) {
width = new int;
height = new int;
*width = a;
*height = b;
}
CRectangle::~CRectangle () {
delete width;
delete height;
}
int main () {
CRectangle rect (3,4), rectb (5,6);
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
CRectangle * p = new CRectangle(10,10);
cout << "rect area: " << p->*height << endl;
return 0;
}
как я могу заставить последний cout
оператор работать?
Комментарии:
1. По какой-либо конкретной причине вы используете члены указателя?
2. проиграл гонку с этим ответом.
Ответ №1:
Переместите оператор разыменования. p->height
ссылается на целочисленный указатель height
. А затем помещение *
перед этим разыменовывает указатель int.
cout << "rect area: " << *p->height << endl;
Ответ №2:
cout << "rect area: " << *(p->height) << endl;