我\xe2\x80\x99m 试图为学术目的制作一个自定义碰撞引擎,但我陷入了一般的 C++ 编程问题\n我已经拥有了所有可以正常工作的几何图形,并且对于问题的范围,我有这个函数:
\n\ntemplate<typename lhs_geometry, typename rhs_geometry>\nbool intersects( const lhs_geometry& lhs, const rhs_geometry& rhs )\n{\n //returns true if does objects intersects \n //(assume this functions works perfectly with every geometry type)\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我还有以下课程需要完成实施
\n\ntemplate<typename geometry_type>\nclass collidable_object\n{\npublic:\n explicit collidable_object( geometry_type& geometry ) :\n m_geometry( geometry )\n {\n\n }\n\n ~collidable_object()\n {\n\n }\n\nprivate:\n geometry_type& m_geometry;\n};\nRun Code Online (Sandbox Code Playgroud)\n\n当我想创建一个列表collidable_object并测试它们是否有 2 × 2 的交集时,我的问题就出现了。
我在 Google 上做了一些研究,发现有一个基类可以collidable_object让我将对象存储到列表中。但之后我如何根据对象的具体几何形状来测试对象呢?
我尝试实现访问者模式,但每次都会陷入困境,因为我不想对每种可能的几何类型进行硬编码,因为我总是只调用intersetcs().
我还找到了一篇关于合作访客的文章,但这似乎很复杂。
\n\n有谁有简单有效的解决方案吗?
\n\n …我正在尝试编写一个使用外部工具的日志库
我正在寻找方便的方法将键字符串添加到输出流,以帮助外部工具解析,同时使用库对程序员的影响最小
目标是实现这样的目标:
cout << DEBUG::VERBOSE << "A should equal 3" << endl;
cout << DEBUG::WARNING << "something went wrong" << endl;
Run Code Online (Sandbox Code Playgroud)
现在,我将数据结构如下
struct Debug
{
static const std::string FATAL_ERROR;
static const std::string ERROR;
static const std::string WARNING;
static const std::string IMPORTANT;
static const std::string INFORMATION;
static const std::string VERBOSE;
static const std::string DEBUG;
};
Run Code Online (Sandbox Code Playgroud)
这个工作找到但我想从std::string类型中添加一个抽象级别.
在Java/C#中我可以用a enum来实现写行为,我怎样才能在C++中优雅地实现它.