小编Yoc*_*mer的帖子

注册文件 - "dword"转换为什么?

我有一个我正在尝试阅读的reg文件.某些值中
有一个" dword " 类型......

"check"=dword:000001f4
"blah"=dword:000000c8
"test"=dword:00000000
"hello"=dword:00000000
Run Code Online (Sandbox Code Playgroud)

我应该将它转换为什么C++类型?如何 ?

c++ windows registry types

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

宏增加值然后连接

我想创建一个递归宏,将创建"下一个"类.

例:

#define PRINTME(indexNum) class m_##(indexNum+1) { }
Run Code Online (Sandbox Code Playgroud)

indexNum + 1被评估为int,并且不会连接到类名.

在连接之前,如何让编译器对其进行评估?

c++ macros concatenation

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

检测编译时是否存在默认构造函数

我正在尝试检查模板参数是否存在默认构造函数.我想做这样的事情:

template <typename A>
class Blah
{
   Blah() { A* = new A(); } 
}
Run Code Online (Sandbox Code Playgroud)

但是我希望在编译时通过SFINAE或其他技巧检测,如果该构造函数存在,并且static_assert如果不存在则引发我自己的.

当我有类(没有std::vector)没有"默认构造函数"但是具有默认参数的构造函数时,问题就出现了.

所以使用std::has_trivial_default_constructor不会返回true.虽然我可以使用new vector<T>().

c++ templates constructor sfinae

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

Timer的回调线程

我在考虑定时器是如何工作的,还有一些我不完全理解的东西.
A Timer使用在时间过去时调用的事件.我假设这是由控制时钟的OS事件触发的(或由时钟控制).
但是我不确定哪个线程会抓住那个事件..

Timer对象是否有自己的线程?
或者是否会在创建计时器对象的线程中调用该事件?

编辑:

那个方面System.Timers.Timer 和之间有区别System.Windows.Forms.Timer吗?

c# events multithreading timer callback

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

SQL在表之间分配数据

我正在设计一个非常大的数据库.

数据将包含项目之间的关系.

如果我可以使用较小的表获得更好的性能,我就会徘徊.我认为在大表上选择项关系的操作可能效率低于只选择包含我想要的项的表.

示例:

选项1:

tableItems:
item1 | item2 | 得分了

选项2:

tabelItem1

item2 | 得分了

最后,当数据被填满时,我将有一个n 2表,其中包含项目之间的所有分数,所以如果我想找到与其他项目相关的item1,我认为从专用表格中提取数据会更有效率(而不是在巨大的n 2桌上做一个选择).

这是一个好的解决方案吗?或者是否有一些更好的SQL优化?

sql database database-design

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

具有地址提示的operator new(在另一个对象附近创建一个对象)

我想创建很多相同类型的对象,我希望它们在内存中相对接近以避免页面未命中.

有没有办法告诉操作系统(Windows平台)尽可能接近给定地址分配内存?(地址提示)
某些功能隐藏在MSDN中?

我知道有新的操作员位置,但我想知道是否还有其他技巧.
是的,我知道如何创建自定义内存管理与新的....

伪代码(如果存在):

Myclass *a = new Myclass();

Myclass *b = AloocateNear(a,sizeof(Myclass));
Run Code Online (Sandbox Code Playgroud)

c++ memory-management visual-studio-2010 new-operator

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

构造函数重载选择强制转换操作符而不是结构类型

我遇到了一个奇怪的情况,即编译器选择构建一个结构,即使有一个非常好的构造函数接收结构类型.
一个小例子:

struct A
{
    operator int() {return 1;}
};

struct B
{
    B(A& a) { OutputDebugStringA("A constructor\n"); }
    B(int i) { OutputDebugStringA("int constructor\n"); }
};
A test () { A a; return a;};

int _tmain(int argc, _TCHAR* argv[])
{
    B b(test());
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

说明:A具有int的强制转换运算符.B2个重载的构造函数,一个接受A引用,另一个接受int.
函数test()返回一个A对象.

由于某种原因,编译器决定将返回值强制转换为int,并使用接受int的构造函数. int constructor

谁能解释为什么会这样?我有一些理论,但我想要一个基于真实事物的答案(可能是标准的引用).

注意:
我可以通过将构造函数签名更改为:B(const A& a)或者 来获取预期结果(接受类型的构造函数) B(A&& a)

c++ constructor casting

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