小编use*_*229的帖子

如何在堆栈上创建多态对象?

如何在堆栈上分配多态对象?我正在尝试做类似的事情(试图避免使用new分配堆)?:

A* a = NULL;

switch (some_var)
{
case 1:
    a = A();
    break;
case 2:
    a = B(); // B is derived from A
    break;
default:
    a = C(); // C is derived from A
    break;
}
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism stack

8
推荐指数
2
解决办法
2704
查看次数

一对基本类型的良好哈希函数

我正在试图为两个原始类型的std :: pair找出一个好的哈希函数.这就是我现在实现它的方式:

template<typename T, typename U>
std::size_t operator()(const std::pair<T,U> &rhs) const
{
    return stdext::hash_value<T>(rhs.first) ^ stdext::hash_value<U>(rhs.second);
}
Run Code Online (Sandbox Code Playgroud)

它似乎工作,即使我有两对,如(1,2)和(2,1)(数字翻转).它们生成相同的哈希值,但值仍然成功插入到哈希映射中.有什么想法吗?

c++ hash

7
推荐指数
2
解决办法
2984
查看次数

我应该为非托管C++ DLL创建C++/CLI包装器DLL吗?

我已经提供了一个包含几个类的非托管C++ DLL.

我需要能够在C#中使用其中一些类.根据我到目前为止的研究,听起来我需要创建一个C++/CLI包装器DLL来处理托管和非托管类型之间的转换.我已经看到一些例子,其中有人基本上会创建每个类的C++/CLI版本,它将包含非托管C++类型的实例.实现我在这里尝试做的最好的方法是什么?非托管DLL中可能提供了10-15个类.现在我只需要使用其中的一些,但将来可能需要使用更多.谢谢!

c# c++ unmanaged managed command-line-interface

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

为C++ stl容器获取GDB漂亮打印以在Eclipse上工作

当我输入"show version"时,gdb显示以下内容:

GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.el5_5.2)
Run Code Online (Sandbox Code Playgroud)

我按照本网站上的说明使用Eclipse设置漂亮的打印:

http://wiki.eclipse.org/CDT/User/FAQ#How_can_I_inspect_the_contents_of_STL_containers.3F

当我尝试使用新的.gdbinit文件启动gdb时,出现以下错误:

Error in sourced command file:
Python scripting is not supported in this copy of GDB
Run Code Online (Sandbox Code Playgroud)

那么我就研究了一种实现这一目标的方法.我有7.0版本,所以它应该能够支持Python脚本.GDB的网站提到使用--with-python选项调用GDB配置脚本.但是,我在系统中的任何位置都看不到配置脚本.有多个开发人员使用这台机器,所以我不想重新安装GDB或类似的东西.有没有办法配置现有的GDB安装来启用python脚本?谢谢!

python gdb

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