小编jma*_*erx的帖子

插件系统没有重建每个操作系统?

我正在制作一个允许内容开发的游戏,我希望它能够成为一个基于DLL的系统.但是,我的游戏适用于Linux(X86 arch),Mac OSX和32位Windows.有没有办法让内容开发人员只编译一件事并使其基于平台工作?我担心如果每个插件有3个版本可能会让人感到困惑.我能做什么?

谢谢

c c++ plugins cross-platform

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

std :: vector指针是否可靠?

说我有这个:

Object *myObject;
std::vector<Object> objects(99);

....
myObject = &objects[4];
Run Code Online (Sandbox Code Playgroud)

假设myObject的指针总是有效,无论对象[]有多大,如果我删除了一些,只要我不擦除()myObject指向的实际对象,是否可以安全?或者它的工作方式不同?如果以上不起作用,我怎么能实现这一目标?这是因为在我的设计中,我希望一个孩子有一个指向其父项的指针,父项在添加子项时由父项指定,但是父项在std :: vector中,我需要随机访问.在我的情况下,std :: list会更好吗?

谢谢

c++ vector

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

函数指针默认是否为NULL?

在下面的类中,这是否意味着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)

c++

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

为什么不编译?

我不明白为什么下面的代码不构建:

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)

c++

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

通过一棵树迭代

我试图找出如何反向迭代,并通过这个,或至少调用一个方法反向.

下面是它的工作原理.

小部件有一个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)

我需要什么样的迭代才能有效地完成上述两种类型的迭代?(从前到后,从前到后).

谢谢

c++ iteration algorithm

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

我需要什么类型的课程?

我想创建一个可以在不实例化的情况下使用的类,但也可以实例化.我认为类似于数学课.

谢谢

c++

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

#including上一个目录中的标题(../)

这就是我想要做的.

我有一个名为Agui的文件夹,它是lib的文件夹.在该文件夹中有另一个名为Widgets的文件夹.我想从Agui/Widgets到Agui文件夹中的#include base.h文件.我该怎么做才能保持跨平台?我应该简单地包括<Agui/base.h>

谢谢

c++

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

STL如何返回具有相同功能的2个迭代器?

我注意到vector.begin()将返回一个const迭代器,或者基于左边给出的迭代器.这样的事情是如何实现的,因为赋予函数的参数是相同的.

谢谢

c++

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

无论你有多少次删除指针,指针都保证保持不变吗?

在以下示例中:

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的小部件的字体是否会在某些时候受到影响?

谢谢

c++

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

Prgrammably制作excel电子表格(97 - 2003格式)

我想知道制作这样的应用程序有多难.基本上,我有一些使用表的旧html文件.我想把这些表放到excel中以便于阅读和操作.我只有文字,我没有公式或任何东西.

有没有关于如何做这类事情的教程?

该应用程序将生成.xls

谢谢

c++ spreadsheet

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

标签 统计

c++ ×10

algorithm ×1

c ×1

cross-platform ×1

iteration ×1

plugins ×1

spreadsheet ×1

vector ×1