有人在这里能够指出一个简单而精心设计的C++ 2D开源游戏引擎吗?这种类型不太重要,我希望通过实例来学习.我不想要任何特别复杂的东西,因为我对学习一般概念感兴趣,而不是深入了解引擎实现的细节.
接口类是否有任何方法可以强制执行复制构造函数的定义,也可能是其他构造函数的定义?在我的例子中,我有一个IResource纯抽象类,我希望所有实现此接口的类都定义一个copy-constr,一个用于从文件加载的构造函数,以及一个用于从内存加载的构造函数.
如果我的文档与我的代码分开,我如何帮助Doxygen区分重载函数(在\fn现场使用什么)?单个函数将记录如下:
void func() {
}
/**
\fn func
\details Description here.
*/
Run Code Online (Sandbox Code Playgroud)
如果我有两个函数叫做func怎么办?
void func() {
}
void func(int i) {
}
/**
\fn [What goes here?]
\details Description here.
*/
Run Code Online (Sandbox Code Playgroud) map<EntityState, boost::weak_ptr<Animation>>我EntityRepresentation班上有一个.我想要为表示创建一个Builder类,但我必须考虑复制地图的成本.
EntityState复制很便宜,因为它只是一组静态函数; boost::weak_ptr复制也很便宜.整个地图怎么样?
服务定位器似乎是一个非常有用的概念,我想在我的应用程序中实现它.但是,我有一些关于如何实现它以及如何与其他编程范例一起使用的问题.
SL应该管理它存储的服务吗?也就是说,当SL被破坏时,它是否也会破坏服务本身,还是应该将其留给注册服务的人?
那么依赖注入呢?既然我有一个SL,那么将SL作为参数传递还是应该全局访问?毕竟,DI的整个目的的大部分也被SL覆盖了,我不想用一个更多的参数来混淆我的很多功能.
假设我有一个类的层次结构:
class Shape {
};
class Circle : public Shape {
}
class Square : public Shape {
}
... hundreds of other shapes continue on...
Run Code Online (Sandbox Code Playgroud)
当给定形状类的名称作为字符串时,我需要实例化该类的对象.
在java中,我可以做这样的事情(伪代码!)
Shape createShape(String name) {
return new Class.forName(name);
}
Run Code Online (Sandbox Code Playgroud)
但是在C++中,我必须这样做:(伪代码!)
Shape * createShape(const string &name) {
if (name.compare("Circle") == 0) {
return new Circle();
}
else if (name.compare("Square") == 0) {
return new Square();
}
else if ... //hundreds of else if continues, one for each shape
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法在C++中处理这样的情况?
我有一个特殊的情况,我无法找到解决方案.我试图强制一个视图在RTL中布局,但其中一个限制是supportsRtl必须false在清单中.
<!-- AndroidManifest.xml -->
<application android:supportsRtl="false">
<!-- layout/activity.xml -->
<android.support.v7.widget.Toolbar
android:layoutDirection="rtl"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,android:layoutDirection和View#setLayoutDirection(int),除非被忽略supportsRtl="true".如果没有我自己的Toolbar,还有什么其他选择来处理这个?
在C你有"%c"和"%f"的格式标志printf-和scanf式的功能.这两个功能的使用可变长度参数...,它总是转换floats到doubles和chars到ints.
我的问题是,如果这种转换发生,为什么做独立的标志char和float存在吗?为什么不只使用相同的标志int和double?
我正在尝试使用宏在C中创建一个类型安全的通用链表.它应该与模板在C++中的工作方式类似.例如,
LIST(int) *list = LIST_CREATE(int);
Run Code Online (Sandbox Code Playgroud)
我的第一次尝试是#define LIST(TYPE)(我上面使用的宏)定义一个struct _List_##TYPE {...}.但是,这不起作用,因为每次我声明一个新列表时都会重新定义结构.我通过这样做解决了这个问题:
/* You would first have to use this macro, which will define
the `struct _List_##TYPE`... */
DEFINE_LIST(int);
int main(void)
{
/* ... And this macro would just be an alias for the struct, it
wouldn't actually define it. */
LIST(int) *list = LIST_CREATE(int);
return 0;
}
/* This is how the macros look like */
#define DEFINE_LIST(TYPE) \
struct _List_##TYPE \
{ \
... \
}
#define …Run Code Online (Sandbox Code Playgroud) c++ ×5
c ×2
oop ×2
android ×1
containers ×1
doxygen ×1
factory ×1
game-engine ×1
inheritance ×1
interface ×1
layout ×1
macros ×1
performance ×1
printf ×1
winapi ×1