CGAL似乎只为我即将开展的项目做了我需要的一切.它可以从弧线段创建多边形并对它们运行布尔运算.它已经有空间排序软件包,可以节省很多时间用于一些事情,整个图书馆似乎非常标准化和精心策划.
对于大多数软件包(非常基本的软件包除外),许可证只是QPL(即将推出的4.0版本的GPL)的问题.我的预算微薄,可能无法收集资金购买CGAL中需要它的特定包装的商业许可证.
我对这种图书馆的具体需求是:
总而言之,我正在寻找一个精确的精确的二维几何C++库. 最好是麻省理工学院,LGPL一次性或低成本的一次性免版税许可证低于500美元.
Boost得到了一些基本结构,但据我所知,他们缺乏很多更高级别的功能.任何已扩展的图书馆?我会考虑自己做,但我缺乏做得好的专业知识,它会延长我的项目相当多.
为了清楚起见,我不是在寻找2D 图形库,只是纯粹的几何结构.
我对c ++很陌生,但我已经掌握了基础知识.我在阅读其他代码时遇到了"Uint32"(各种大写)和类似数据类型的使用,但我找不到任何提及它们的文档.我知道"Uint32"是一个32位无符号整数,但我的编译器没有.我正在使用visual c ++ express,它无法从我所知道的任何形式识别它.
是否有一些编译器默认读取这些数据类型,或者让这些程序员将它们自己声明为类或#define常量?
我可以看到使用它们来准确知道整数的长度,因为正常的声明似乎因系统而异.使用它们还有其他优点或缺点吗?
使用Python 2.6,有没有办法在一个语句中检查序列的所有项是否等于给定值?
[pseudocode]
my_sequence = (2,5,7,82,35)
if all the values in (type(i) for i in my_sequence) == int:
do()
Run Code Online (Sandbox Code Playgroud)
而不是说:
my_sequence = (2,5,7,82,35)
all_int = True
for i in my_sequence:
if type(i) is not int:
all_int = False
break
if all_int:
do()
Run Code Online (Sandbox Code Playgroud) 无限递归通常是不希望的,当它发生时通常会导致堆栈溢出或段错误.
但是出于理论的缘故和普通的好奇心,我一直在想是否有可能有意识地创造实际的无限递归.
在C++和C中工作,其中堆栈通常为每个函数调用增长,并且每个函数返回并弹出它处理的堆栈部分.
这是想法.是否可以强制函数清除它自己的堆栈空间然后调用另一个函数,以便新函数有效地替换第一个函数,而第一个函数不需要返回,然后通过循环再次触发.
我不只是考虑将普通循环作为一种可能的用途,如果有的话.循环通常可以很好地完成他们的工作.但是,如果您使用它通过节点网络发送信号,那么它会在自己的进程线程中无限期地继续运行,直到它们达到某个条件.它可能是一个可用于解决某些问题的工具.
记住,我不是在问它是否实用,只有在可能的情况下.对于科学!
很难为这个问题找到合适的标题.无论如何...
我目前正在为SDL中的游戏制作GUI.我已经完成了软件绘图,当我出现一个奇怪的错误时,我正在开始使用它的OpenGL部分.我包含了"SDL/SDL_opengl.h"标头并编译.它抛出"错误C2039:'DrawTextW’:是不是'GameLib :: FontHandler’中的一员",这是一个很简单的错误,但我没有什么所谓的DrawTextW,只有FontHandler :: DrawText的.我搜索DrawTextW并在标题"WinUser.h"中的#define调用中找到它!
//WinUser.h
#define DrawText DrawTextW
Run Code Online (Sandbox Code Playgroud)
显然它用DrawTextW替换了我的DrawText!如何阻止它溢出到我的代码中呢?
改变我自己的函数名称是一件小事,但这样的命名冲突似乎非常危险,我真的想知道如何一起避免它们.
干杯!
有一个#pragma命令可以从源文件而不是从项目设置链接到库中.我似乎无法记住它.
这里有人能提醒我吗?
谢谢
我正在尝试使用va_arg在我的GUI库中创建一个通用工厂函数.在同一函数中传递va_arg两次时,它们传递相同的值而不是两个不同的值:
GUIObject* factory(enumGUIType type, GUIObject* parent, ...){
va_list vl;
va_start(vl, parent);
...
label->SetPosition(va_arg(vl, int), va_arg(vl, int));
va_end(vl);
return finalObjectPointer;
}
factory(LABEL, theParent, 100,200); // Results in position 200:200
Run Code Online (Sandbox Code Playgroud)
是什么导致了这种意外行为
我真的很不高兴.我是否设法做了一些事情导致这种情况,或者它是在boost中未封闭的命名空间块,还是VS c ++ 2008中的一些错误?我肯定我已经正确地关闭了所有自己的命名空间,所有包含都在它们之外和之上,并且我的所有头文件都包含了警卫.
替代文字http://lowtown.se/stuffs/superboost.png
boost/function.hpp仅包含在此标头中.我的库中的另外两个头文件包含boost/cstdint.hpp但它们没有这个问题.