【发布时间】:2023-04-04 00:13:01
【问题描述】:
我正在制作一个简单的游戏,其中包含属于同一类的多个项目对象。我不想用一个永无止境的对象列表填充我的主函数,而是想创建一个执行此操作的函数,然后在主函数的开头调用它,但我意识到一旦它们的函数结束它们就会像平常一样被销毁变量。是否有一种解决方法来实例化所有对象而不在我的主函数中编写一个巨大的列表? (以下代码不是我在我的程序中使用的,它是简化的)
#include <iostream>
class Items
{
public:
std::string name;
int number;
};
void CreateObjects()
{
Items obj1 = {"Obj1", 1};
Items obj2 = {"Obj2", 2};
Items obj3 = {"Obj3", 3};
}
int main ()
{
CreateObjects();
std::cout << obj1.name;
//here I get an error saying "Identifier obj1 is undefined"
}
【问题讨论】:
-
这是
std::vector(或std::array)的情况,或者有什么特殊原因需要这些单独的变量? -
我会尝试使用向量,我是 C++ 的新手,所以我不知道解决问题的所有可能“方法”哈哈。无论如何,谢谢。
-
如果您的目标是创建多个多种类型 的对象,则另一种方法是返回具有多个成员(显然是所需类型)的
struct。该函数创建struct的实例,初始化每个成员,然后返回struct。
标签: c++ function object destructor