小编Val*_*ond的帖子

你能禁止本地的实例化吗?

我有一个自动过程监控的辅助类,因为它有点像"一次又一次忘掉"的机制,一个很大的缺陷就是你可以像这样使用它:

MyClass c(过程);

但是当c超出范围时,内部的线程停止,显然没有通知从它出来.

你应该怎么做是这样的:

MyClass*c = new MyClass(process);

并自己处理一生.

是否有一种简单,好的方法,禁止本地实例化,只允许在c ++中使用"new"?

干杯!

Valmond

c++ multithreading scope instantiation

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

为何func("abc""def"); 编译

在我的代码中偶然发现了一个小姐,这个函数被调用了

func("text1" "text2");
Run Code Online (Sandbox Code Playgroud)

代替

func("text1", "text2");
Run Code Online (Sandbox Code Playgroud)

问题是它实际上编译并运行(MSVC 2008),两个字符串被视为一个(即对重载func的调用获取输入"text1text2").

这是正常的标准行为(即"abc""def"=="abcdef")还是不是?

c++ compiler-construction standards

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

在c ++中删除名称冲突的最佳方法

我刚从WinXP升级到Seven,我不得不将Windows SDK添加到我的项目中以使其编译.

到目前为止这么好但我的第二个项目遇到了障碍,'PlayerState'在我的项目中用作类,在Windows SDK(effects.h)中用作枚举,这显然会产生错误(错误C2011:'PlayerState': 'struct'类型重新定义).

解决这个问题的最佳方法是什么?

我想到了:

  • 重命名,但我将打破命名约定(它确实是玩家的状态')
  • 把它放在命名空间中,但是我应该把Every class放在命名空间中,这意味着很多工作

有没有其他方式(也许是一个特殊的MSVC 2010 vay)说,排除那个文件或某种"unfine"枚举或其他东西?

[编辑]答案是,大声而清晰,NAMESPACES!+1并感谢所有人!

c++ winapi visual-c++ windows-7

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

简单的光线碰撞库(如果它加载3ds和b3d则奖励)

我花了很长时间搜索一个简单/快速的c ++库(Win/Linux),可以回答这两个问题"这条光线穿过任何三角形吗?" 或者'第一个交叉点在哪里,如果有的话?'.

这是我正在编写的小游戏,将用于查看NPC是否可以看到玩家,还可以检查玩家是否可以一直掉到地上(或不是).三角形不会移动(好吧,如果你可以在'/'off'上标记一个三角形组,这将是很好的).

我实际上找到了一些库,但只有非继续(或似乎)像OZCollide一样.当然,那里有所有那些新的闪亮的物理引擎,但我不需要它们提供的99%.

如果库可以加载.3ds的.b3d文件,那么可以获得额外的好处,如果它可以在多线程环境中使用(创建多个搜索数据实例),那就更好了.

谢谢大家!

c++ 3d collision-detection

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

使用Xerces从内存加载xml

我得到了一些我想用Xerces解析的合理的xml数据(由CodeSynthesis生成).

在光盘上它是加密的,所以我加载它,解密它...我被卡住,因为Xerces只接受文件作为输入.

我曾考虑过重载一个'读者'(即.std :: istream或xercesc :: InputSource)并伪造光盘读数,但它看起来像古怪而不优雅.

有没有更简单和更简洁的方法来做到这一点?

谢谢!

c++ xml memory file xerces

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

无法弄清楚如何总是从较大的数字减去较小的数字

我有整个程序,除了它总是从较大的数字中减去较小的数字的部分.我一直试图找到它,但我找不到任何可以帮助我的东西.这是我需要帮助的唯一部分.

这是代码.

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

//function prototype
int getRandomNumber(int lower, int upper);

int main()
{
//declare variables
int smallest = 0;
int largest = 0;
int num1 = 0;
int num2 = 0;
int correctAnswer = 0;
int userAnswer = 0;

//initialize rand function
srand(static_cast<int>(time(0)));

cout << "Smallest Integer: ";
cin >> smallest;
cout << "Largest Integer: ";
cin >> largest;
cout << endl;

for (int x = 1; x < 6; x += …
Run Code Online (Sandbox Code Playgroud)

c++ cmath

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