c++ - 如何在 C++ 中正确实现 addObject() 函数?
问题描述
我是这个网站的新手。
如果有人问过这个问题,我很抱歉,但我找不到任何问题/解决方案来回答我的问题,因为我认为这是一个非常具体的问题。
所以我一直在学习如何在 C++ 中使用 SFML 创建游戏引擎,我有一个关于如何实现 addObject() 函数的问题,该函数在被调用时创建一个对象,该对象被添加到类中的对象向量中一种优化的方式。
这是我的尝试:
Object.h
class Object{
private:
string m_Type;
string m_Action;
int m_PositionX;
int m_PositionY;
public:
Object(string type, string action, int positionX, int positionY){
m_Type = type;
m_Action = action;
m_PositionX = positionX;
m_PositionY = positionY;
}
};
ListOfObjects.h(addObject() 函数所在的位置)
class ListOfObjects{
private:
vector<unique_ptr<Object>> m_Objects;
public:
void addObject(string type, string action, int positionX, int positionY){
m_Objects.push_back(move(make_unique<Object>(type, action, positionX, positionY)));
}
};
现在这工作正常,但我认为可能有更好的方法来实现它。
我有这个想法的原因是,当我尝试更改Object
类的构造函数时,假设我想再添加一个参数(例如Object(std::string m_Type, std::string m_Action, int PositionX, int PositionY, int Scale);
),现在我还需要更新addObject(...)
函数的参数以及在我调用该make_unique
函数的代码行以下。这是很多工作(或者不是,我真的不知道,我还是个初学者,哈哈)。所以我想我可以让addObject(...)
一个临时对象而不是参数列表来匹配Object
类本身的构造函数吗?
ListOfObjects.h
class ListOfObjects{
private:
std::vector<std::unique_ptr<Object>> m_Objects;
public:
void addObject(Object object){
m_Objects.push_back(move(make_unique<Object>(object)));
}
};
现在,每当我需要更改Object
类的构造函数时,我都不需要更新 addObject(...) 函数。但是现在,我需要Object
像这样添加:
int main(){
addObject(Object("name", "action", 100, 50));
//and then a lot of random errors associated with memory and pointer stuff :(
return 0;
}
我实际上试图实现这一点,但只有很多错误,我的小脑袋无法理解出了什么问题。我不知道将临时对象传递给函数是否是一项昂贵的操作。我应该像这样传递临时对象的引用吗?addObject(Object& object)
所以主要的问题是:
有没有更好的方法来实现这个函数来添加一个对象,这样向构造函数添加更多参数Object
不需要我更新addObject(...)
函数?
任何帮助将非常感激!(抱歉这么长的问题:<)
解决方案
推荐阅读
- rest - REST API 设计:当 api 必须返回一个字段的相等和不相等列表时,如何处理这种情况?
- c# - 尝试在锚标记助手中使用自定义路由时出错
- r - 如何在 RMarkdown 中合并和打印多个代码块?
- c++ - 在 C++ 中将变量 wstring 分配给 Char 数组
- prometheus - 在普罗米修斯的一项工作中注册多个黑盒出口商
- ansible - 如何在ansible中以不同的参数方式应用条件
- pdf - 带有签名哈希的 itextsharp 签名 pdf
- c++ - c++ 用户输入的奇怪数组
- git - 在 heroku deploy 中获取当前 github 分支名称
- sql - 麻烦按名称分组