我目前有以下问题(简单问题(。我想从嵌套类访问基类的公共成员。显然它不那么容易工作。。。这里的正确解决方案是什么?
我必须将*this传递给派生类中的嵌套类吗?
谢谢你给我思考的食物!
#include <iostream>
class base
{
public:
virtual void update() = 0;
void drawCircle(const int& num) const { std::cout << "Base Clase: Circle " << num << " completed..." << std::endl; };
private:
};
class derived : public base
{
public:
class nestedClass
{
public:
void drawSomeCircle() const {
drawCircle(1); // does not work!
drawCircle(2); // does not work!
drawCircle(3); // does not work!
}
private:
};
void update() override
{
// make some graphic stuff
myInnerNestedClass.drawSomeCircle();
// access base class member drawCircle from here --> is working
drawCircle(4);
}
nestedClass myInnerNestedClass;
private:
};
int main()
{
derived oneDerivedClass;
oneDerivedClass.update();
return 0;
}
是否必须将
*this
传递给派生类中的嵌套类?
是。nestedClass
不知道drawCircle(const int&)
属于谁,除非它在全局或外部namespace
范围内。
一旦将derived
的*this
对象传递给nestedClass
,它甚至可以访问其private
成员。