如何在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,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 (将#修改为@)