C++:将主指针传递给辅助角色
C++: Passing a pointer of master to the worker
我对指针很陌生,所以我不知道它们是怎么回事。
我试图让大师班将自己的指针传递给它的工作线程,我不知道为什么它不起作用。
#include <iostream>
#include <Windows.h>
using namespace std;
class BigOne {
public:
LittleOne workers[1] = {LittleOne(this)};
int increase = 0;
};
class LittleOne {
BigOne* master;
public:
LittleOne(BigOne*);
void Increment();
};
LittleOne::LittleOne(BigOne* upOne) {
master = upOne;
}
void LittleOne::Increment() {
master->increase++;
}
BigOne Outer;
int main() {
cout << Outer.increase << endl;
Outer.worker.Increment();
cout << Outer.increase << endl;
system("PAUSE");
}
这是我的问题归结为其核心组件。
问题不在于指针。它主要在这里:
class BigOne {
public:
LittleOne workers[1] = {LittleOne(this)};
int increase = 0;
};
当你定义workers
时,什么是LittleOne
?它在记忆中是如何布局的?它是如何初始化的?编译器无法知道,它还没有看到类定义。所以你必须翻转定义:
class BigOne;
class LittleOne {
BigOne* master;
public:
LittleOne(BigOne*);
void Increment();
};
class BigOne {
public:
LittleOne workers[1] = {LittleOne(this)};
int increase = 0;
};
前向声明允许我们定义接受和返回指针的成员。所以类LittleOne
可以在BigOne
之前写下它的定义。现在BigOne
可以按值定义类型LittleOne
的成员。
问题在于前向声明。 您可以参考以下链接以获取更多详细信息和说明。
什么是C++中的远期声明?
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- C++:将主指针传递给辅助角色
- 为什么Arduino对Mega 2560和ESP8266的角色指针处理有两种不同的行为
- 角色指针访问