问题描述
我是这个网站的新手。
很抱歉,如果有人问过这个问题,但是我找不到能回答我问题的任何问题/解决方案,因为我认为这是一个非常具体的问题。
因此,我一直在学习如何在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,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(...)
函数?
任何帮助将不胜感激! (对这么长的问题深表歉意:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)