C++:将主指针传递给辅助角色

C++: Passing a pointer of master to the worker

本文关键字:角色 指针 C++      更新时间:2023-10-16

我对指针很陌生,所以我不知道它们是怎么回事。

我试图让大师班将自己的指针传递给它的工作线程,我不知道为什么它不起作用。

#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++中的远期声明?