我想知道是否应该将fishes
vector
传递到fishExists
函数中,或者是否应该将fish
而不是fishId
传递到fishExists
函数中
class Aquarium {
std::vector<Fish*> fishes;
public:
bool addFish(Fish* fish);
bool fishExists(unsigned int fishId);
};
bool Aquarium::addFish(Fish *fish) {
if(fishExists(fish->getId())) {
return false;
}
fish->setAquarium(this);
fishes.push_back(fish);
return true;
}
bool Aquarium::fishExists(unsigned int fishId) {
auto it = std::find_if(fishes.begin(), fishes.end(), [fishId](const Fish* fish) {
return fish->getId() == fishId;
});
return it != fishes.end();
}
字符串
2条答案
按热度按时间frebpwbc1#
您不需要将
fishes
向量传递给bool fishExists(unsigned int fishId);
函数,因为它们都在同一个类中。成员函数可以直接访问其他成员
fishExists()
函数可以访问你的fishes
向量,因为它们在同一个类Aquarium
中。gcxthw6b2#
由于fishes是一个私有成员变量,它可以被同一个类的所有成员函数访问。因此没有必要将它作为参数传递。也许显式指定fishes是私有成员变量会更好:
字符串
如果你有一个派生类:
型
在这种情况下,您必须将fishes向量传递给派生成员函数(可能通过在基类中添加getFishes()函数)。
因此,基类的成员函数可以访问所有成员变量(甚至是私有的)。
但是,派生类的成员函数不能访问其基类的私有成员。唯一的方法是使用友元声明。