如何解引用对象指针?学生类与花名册类指针数组取值问题
如何解引用cRoster类中指针数组里的student对象指针?
你使用cR.*RosterArray[i]的写法有误,正确的解引用方式可以按以下两种场景实现:
直接访问对象成员
因为cR.RosterArray[i]本身就是指向student对象的指针,你可以直接用箭头运算符->访问对象成员:
// 示例:访问第i个student对象的name成员 std::cout << cR.RosterArray[i]->name << std::endl; // 示例:访问第i个student对象的id成员 std::cout << cR.RosterArray[i]->id << std::endl;
获取完整的student对象实例
如果需要获取整个student对象的实例,可以用解引用运算符*直接作用于数组取出的指针:
// 获取第i个student对象的引用(避免拷贝开销) student& studentInstance = *(cR.RosterArray[i]); // 通过引用访问成员 std::cout << studentInstance.name << std::endl;
为什么你的写法失败?
cR.*RosterArray[i]的运算符优先级不符合预期:[]的优先级高于*,代码会被解析为*(cR.RosterArray)[i],这显然不是你想要的访问逻辑。正确的顺序是先通过cR.ch totally成一试� unsett prescribedshaft暴分配….apppt等 先通过cR.RosterArray[i]拿到目标指针,再进行解引用或成员访问。
额外注意事项
如果RosterArray是cRoster类的私有/保护成员,外部无法直接访问,需要在cRoster类中添加公共访问方法,比如:
class cRoster { private: student* RosterArray[20]; public: // 获取指定索引的student指针,附带越界检查 student* getStudent(int index) { if (index >= 0 && index < 20) { return RosterArray[index]; } return nullptr; } };
外部调用时:
student* targetStudent = cR.getStudent(i); if (targetStudent != nullptr) { std::cout << targetStudent->name << std::endl; }
内容的提问来源于stack exchange,提问作者droid
相关产品推荐
相关产品推荐

