gpt4 book ai didi

C++:将 master 的指针传递给 worker

转载 作者:行者123 更新时间:2023-11-30 01:36:57 26 4
gpt4 key购买 nike

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

我正在尝试让主类将自身的指针传递给它的工作人员,但我不知道为什么它不起作用。

#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++:将 master 的指针传递给 worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50850335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com