我试图通过一个实现简单车辆路径问题的小项目来掌握 C++ 指针和对象的窍门。尽管我的代码目前可以正常工作,但我无法摆脱我的方法完全错误的感觉。让我烦恼的是代码片段,例如:
std::map<const Route*, double>::iterator it = quantities.begin();
if ((*(*(it->first)).getDestination()).getDemand() > (*(*(it->first)).getDeparture()).getSupply())
if 条件中的指针 hell 情况是 get 方法返回指向已创建对象的指针的结果。被调用的方法是:
const Departure* Route::getDeparture() const {
return departure;
};
const Destination* Route::getDestination() const {
return destination;
};
和
int Destination::getDemand() const {
return demand;
};
int Departure::getSupply() const {
return supply;
};
我是否完全偏离了轨道,我是否遗漏了什么,或者这种情况是否正常?
最佳答案
为了提高可读性,您可以将 *
更改为 ->
:
if(it->first->getDestination()->getDemand() > it->first->getDeparture()->getSupply())
此外,如果您不打算放弃该对象的所有权(在这种情况下您并没有放弃),最好通过 const
返回引用:
const Departure& Route::getDeparture() const {
return *departure;
};
并使用 .
,而不是 ->
:
if(it->first->getDestination().getDemand() > it->first->getDeparture().getSupply())
关于c++ - C++中指向对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9999277/