gpt4 book ai didi

c++ - 同一类使用的映射引用类

转载 作者:行者123 更新时间:2023-11-30 05:23:35 26 4
gpt4 key购买 nike

我有一个类需要保留其所有对象的引用列表。例如:

//A.cpp
class A {
A() {}
someMethod() {}
someOtherMethod() { mapA[0]->someMethod(); }
}

//main.cpp
#include <map>

std::map<int, A*> mapA;
int main(int argc, char const *argv[]) {
int count = 0;
A* a = new A();
mapA[count] = a;
count++;
}

但是,因为 mapA 只对 main.cpp 是全局的,A.cpp 不能引用它。我尝试使用 extern,但是因为 map 使用相同的类 A,所以我不知道该把它放在哪里。

解决这个问题的最佳方法是什么?

最佳答案

您可以在构造函数中注册它们,并在类中创建静态变量:

// a.hpp
class A {
public:
A() { as.insert(this); }
A(const A& rhs) { as.insert(this); }
~A() { as.erase(this); }
static std::set<A*> as; // Declaration
};

// a.cpp
std::set<A*> A::as; // Definition

关于c++ - 同一类使用的映射引用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39069927/

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