小编Pet*_*ter的帖子

类接口查询

我一直想知道我在游戏引擎和游戏中使用了相当长一段时间的设计。假设我们有一个 Object 类

class Object
{
    public: 
        const std::string& getName() { return m_name; }

    private:
        std::string m_name;
}
Run Code Online (Sandbox Code Playgroud)

然后,我有一个名为 ObjectManager 的类,它保存一个 Object 实例。现在,我一直在想是否应该在 ObjectManager 中将该实例保留为私有并重复代码,以便它可以调用 getName(),或者将 Object 设为公共,这违背了封装的概念。大家觉得哪种设计更好呢?

谢谢你的帮助!

c++

5
推荐指数
1
解决办法
141
查看次数

与Express.js和Angular2的CORS

我正在尝试从我的远程Express.js服务器下载PLY文件到我的Angular/Ionic应用程序.我现在在亚马逊AWS上托管了我的Ionic应用程序.这是Ionic应用程序的Typescript:

//this.currentPlyFile encompasses entire URL
document.getElementById('entity').setAttribute("ply-model", "src: url(" + this.currentPlyFile + ".ply);");
Run Code Online (Sandbox Code Playgroud)

我的Express.js服务器中有以下内容:

app.use(function(req, res, next) {
        res.header('Access-Control-Allow-Credentials', true);
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Methods', 'GET,POST');
        res.header('Access-Control-Allow-Headers', 'appid, X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
        if ('OPTIONS' == req.method) {
            res.send(200);
        } else {
            next();
        }
    });
Run Code Online (Sandbox Code Playgroud)

但是在请求PLY文件时出现以下错误:

XMLHttpRequest cannot load "my url here" No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'my url here' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

这真是令人沮丧,因为我使用Express.js文档提供的头文件来允许CORS.

javascript node.js cors express angularjs

1
推荐指数
1
解决办法
1960
查看次数

是否可以转发声明要在派生类中使用的枚举类?

我正在为我正在创建的这种简单的GUI脚本语言制作一个小的解析器.一切正常,但我需要知道是否可以这样做:

Parser.hpp:

class Parser
{
public:
    enum class LineType;
}
Run Code Online (Sandbox Code Playgroud)

GUIParser.hpp:

class GUIParser : public Parser
{
public:
        enum class LineType
        {
            BACKGROUND,
            BUTTON,
            LABEL,
            RADIOBOX,
            COMMENT
        };
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误,但是如果可能那么我会做出什么语法错误?

感谢您的帮助!

c++ inheritance enumerator

0
推荐指数
1
解决办法
54
查看次数

在这种情况下我会回报什么?

我将发布我的代码然后解释我的查询:

typedef std::shared_ptr<SEntity> Entity;

//Scene_Ids is an enum
static std::map<Scene_Ids, std::vector<Entity> > m_scene_entities;

std::shared_ptr<SEntity>& SEntityManager::getEntity(const std::string& entity_name)
{
    int counter = 0;

    for (auto iter = m_scene_entities.begin(); iter != m_scene_entities.end(); ++iter)
    {
        if (iter->second[counter]->getId() == entity_name)
            return iter->second[counter];

        counter++;
    }

    //What would I return if the entity couldn't be found?
}
Run Code Online (Sandbox Code Playgroud)

代码基本上解释了这一切.我有一个方法,如果在地图内的std :: vector中找到"实体",它将返回对它的std :: shared_ptr类型的引用.但是,由于我没有返回指针,我无法返回nullptr.在失败的情况下我能回报什么?

另外,我知道std :: shared_ptr意味着在几个不同的地方有副本.为此,我真的需要返回一个引用,还是可以按值返回它?

谢谢!

c++ pointers reference std shared-ptr

0
推荐指数
1
解决办法
73
查看次数