我正在制作一个允许内容开发的游戏,我希望它能够成为一个基于DLL的系统.但是,我的游戏适用于Linux(X86 arch),Mac OSX和32位Windows.有没有办法让内容开发人员只编译一件事并使其基于平台工作?我担心如果每个插件有3个版本可能会让人感到困惑.我能做什么?
谢谢
说我有这个:
Object *myObject;
std::vector<Object> objects(99);
....
myObject = &objects[4];
Run Code Online (Sandbox Code Playgroud)
假设myObject的指针总是有效,无论对象[]有多大,如果我删除了一些,只要我不擦除()myObject指向的实际对象,是否可以安全?或者它的工作方式不同?如果以上不起作用,我怎么能实现这一目标?这是因为在我的设计中,我希望一个孩子有一个指向其父项的指针,父项在添加子项时由父项指定,但是父项在std :: vector中,我需要随机访问.在我的情况下,std :: list会更好吗?
谢谢
在下面的类中,这是否意味着onPaintCallback为NULL,或者我必须在类构造函数中将其设为NULL?我想在给出有效指针之前开始检查NULL.
class AguiWidgetBase
{
virtual void onPaint();
void (*onPaintCallback)(AguiRectangle clientRect) = 0;
public:
AguiWidgetBase(void);
~AguiWidgetBase(void);
};
Run Code Online (Sandbox Code Playgroud) 我不明白为什么下面的代码不构建:
bool AguiRectangle::pointInside(const AguiPoint &p )
{
if(p.getX() < x) return false;
if(p.getY() < y) return false;
if(p.getX() >= x + width) return false;
if(p.getY() >= y + height) return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
Error 1 error C2662: 'AguiPoint::getX' : cannot convert 'this' pointer from 'const AguiPoint' to 'AguiPoint &' c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\agui\aguibasetypes.cpp 259
Error 3 error C2662: 'AguiPoint::getX' : cannot convert 'this' pointer from 'const AguiPoint' to 'AguiPoint &' c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\agui\aguibasetypes.cpp 261
Error 2 error C2662: 'AguiPoint::getY' …Run Code Online (Sandbox Code Playgroud) 我试图找出如何反向迭代,并通过这个,或至少调用一个方法反向.
下面是它的工作原理.
小部件有一个Widget*的std :: vector,它是控件的子元素.子矢量是z有序的,这意味着子[0]落后于子[1](按渲染顺序).每个控件都有一个指向其父级的指针,但父级为NULL的根(虚拟)小部件除外.
对于我的渲染,我需要做一个阶梯式的迭代(回到前面)ex:
root->child[0];
root->child[0]->child[0];
root->child[0]->child[1];
root->child[1];
root->child[1]->child[0];
root->child[1]->child[1];
Run Code Online (Sandbox Code Playgroud)
然而,为了找到鼠标下的哪个小部件,我必须从前到后进行矩形测试:
root->child[9]->child[1];
root->child[9]->child[0];
root->child[9];
root->child[8]->child[2];
root->child[8]->child[1];
root->child[8]->child[0];
root->child[8];
Run Code Online (Sandbox Code Playgroud)
我需要什么样的迭代才能有效地完成上述两种类型的迭代?(从前到后,从前到后).
谢谢
这就是我想要做的.
我有一个名为Agui的文件夹,它是lib的文件夹.在该文件夹中有另一个名为Widgets的文件夹.我想从Agui/Widgets到Agui文件夹中的#include base.h文件.我该怎么做才能保持跨平台?我应该简单地包括<Agui/base.h>?
谢谢
我注意到vector.begin()将返回一个const迭代器,或者基于左边给出的迭代器.这样的事情是如何实现的,因为赋予函数的参数是相同的.
谢谢
在以下示例中:
AguiWidget::setGlobalFont(segoe);
label->setFont(AguiWidget::getGlobalFont());
label->resizeToText();
delete segoe;
segoe = 0;
segoe = new AguiFont(std::string("test.ttf"),24);
Run Code Online (Sandbox Code Playgroud)
我原本期望标签崩溃,因为label的font = globalFont是= segoe.
这会一直有效吗?
是否可以安全地假设,如果我重新创建segoe,使用它的所有小部件都可以,或者使用segoe的小部件的字体是否会在某些时候受到影响?
谢谢
我想知道制作这样的应用程序有多难.基本上,我有一些使用表的旧html文件.我想把这些表放到excel中以便于阅读和操作.我只有文字,我没有公式或任何东西.
有没有关于如何做这类事情的教程?
该应用程序将生成.xls
谢谢