c++ - 从类内结构方法获取类的引用
问题描述
我有这个代码:
//.h
class A
{
struct B
{
void SomeMethod();
}
B b;
}
//.cpp
void A::B::SomeMethod()
{
//here will be code
}
我可以从中获取到类对象的链接A
吗SomeMethod()
?因为this
在 struct object 上返回引用b
。
也许答案很容易找到,但我无法提出正确的要求。
感谢帮助。
解决方案
从设计(B 是 A 的私有成员)看起来用户只能访问 A 类接口。那么只将父类指针传递给方法呢:
class A
{
struct B
{
void SomeMethod(A* parent);
};
B b;
public:
void callSomeMethod() { b.SomeMethod(this); }
};
//.cpp
void A::B::SomeMethod(A* parent)
{
std::cout << "parent addr: " << parent << std::endl;
}
int main()
{
A a;
std::cout << "a addr: " << &a << std::endl;
a.callSomeMethod();
}
推荐阅读
- visual-c++ - 以编程方式以 vsd 格式保存 visio 2016 图表
- c++ - 用于输入流读取的类模板函数 - C++
- php - 如何在不替换链接的情况下使用 file_get_contents(url) 进行抓取
- javascript - 更改另一个数组内的数组内对象的对象属性
- java - “java.base/java.util.Scanner.throwFor(Scanner.java:939) 处的线程“主”java.util.InputMismatchException 中的异常”
- python - “枕头是在没有 XCB 支持的情况下构建的”
- html - 如何重复旋转?
- python - 如何在python中格式化文本文件中的行
- c++ - 如何根据计数器缩放值
- node.js - 使用 puppeteer 执行 Jest 测试时出现超时错误