提问人:ThomasAlvaEdison 提问时间:10/3/2022 更新时间:10/3/2022 访问量:277
C++:从嵌套类(在派生类中)访问基类成员
C++: Access base class member from a nested class (in the derived class)
问:
我目前有以下问题(简单的问题)。 我想从嵌套类访问基类的公共成员。显然它不那么容易工作...... 这里的正确解决方案是什么?
我是否必须将 *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;
}
答:
1赞
iammilind
10/3/2022
#1
我是否必须传递到派生类中的嵌套类?
*this
是的。 不知道属于谁,除非它在全局或外部范围内。nestedClass
drawCircle(const int&)
namespace
一旦你把一个对象传递给 ,它甚至可以访问它的成员。*this
derived
nestedClass
private
评论
nestedClass
除了在某些情况下需要命名它之外,没有特殊关系(很像命名空间)。因此,如果您的情况的可能答案是相同的答案,如果没有嵌套并且您的程序中有任何其他类。derived
derived::nestedClass
nestedClass
protected/private
static
OuterClass.this