Quote:
Originally Posted by giwim 5
Code:
ptr[count].setName(name);
ptr[count].setAge(age);
Các thím ơi, cái dòng trên e muốn sửa ko dùng dấu chấm mà dùng -> như này:
Code:
ptr[count]->setName(name);
ptr[count]->setAge(age);
sao ko được ạ, có phải vì ptr là array nên ko được ko 
|
Cần phải hiểu sự khác nhau giữa pointer trên memory. "." là tham khảo trực tiếp lên vùng memory chứa data. Còn "->" thao khảo gián tiếp từ một vùng memory chứa pointer (pointer này chứa địa chỉ đến vùng memory chứa data)
Khi bạn khai báo
Tức là khai báo vùng memory chứa data, chứ đâu phải khai báo pointer.
Sửa thành kiểu này
Code:
int main()
{
int number, age;
string name;
cout << "How many people ?: ";
cin >> number;
Person *ptr[number];
for (int count = 0; count < number; count++)
{
Person *obj = new Person();
ptr[count] = obj;
cin.ignore();
cout << "Enter name of person " << count+1 << ": ";
getline(cin, name);
ptr[count]->setName(name);
cout << "Enter age of person " << count+1 << ": ";
cin >> age;
ptr[count]->setAge(age);
}
for (int count = 0; count < number; count++)
{
cout << "The name " << ptr[count]->getName() << " has length " << lengthOfName(**ptr) << endl;
}
delete *ptr;
return 0;
}
p/s: Bài về nhà thì tự mày mò, giải quyết thì sẽ có cảm giác đã hơn