有没有办法在成员函数定义中访问特定的Class实例的成员函数?让我澄清一下我在下面的伪代码中的意思。
谢谢!
// A Class called Dog
class Dog
{
public:
void eat();
void drink();
//... More code here
};
void Dog::eat()
{
//How do I always access dog1.drink() here, regardless of which instance calls it?
}
//... More code here
// Instances of Dog
Dog dog1, dog2;
答案 0 :(得分:3)
如果你想让dog1
喝酒,你只需致电:
dog1.drink();
在Dog
的成员函数中是否写入此内容没有任何区别。这里没有必要过分思考。
注意:与全局变量的任何其他使用一样,全局变量必须在使用它的代码之前声明。
答案 1 :(得分:0)
简而言之:有点儿,这是可能的,但它很奇怪,也很奇怪,也很奇怪。你想做什么?
class Dog {
static Dog *firstDog_;
public:
Dog() { if(firstDog_ == nullptr) firstDog_ = this; }
~Dog() { if(firstDog_ == this) firstDog_ = nullptr; }
void eat();
void drink();
}
Dog *Dog::firstDog_ = nullptr;
void Dog::eat() {
if (firstDog_ != nullptr)
firstDog_->drink();
}
所以,如上所述,第一只狗将是“永远喝酒的狗”。当第一只狗被摧毁时,没有第一只狗。将要创建的下一只狗成为新的狗总是饮用。
但这是weeeeiiiiirrrrdddd。不要这样做!