我一直想知道我在游戏引擎和游戏中使用了相当长一段时间的设计。假设我们有一个 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 设为公共,这违背了封装的概念。大家觉得哪种设计更好呢?
谢谢你的帮助!
我正在尝试从我的远程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.
我正在为我正在创建的这种简单的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)
这给了我一个错误,但是如果可能那么我会做出什么语法错误?
感谢您的帮助!
我将发布我的代码然后解释我的查询:
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++ ×3
angularjs ×1
cors ×1
enumerator ×1
express ×1
inheritance ×1
javascript ×1
node.js ×1
pointers ×1
reference ×1
shared-ptr ×1
std ×1