问题标签 [c++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
14 回答
20071 浏览

c++ - 有没有办法防止方法在子类中被覆盖?

有没有人知道 C++ 中的语言特性或技术来防止子类在父类中覆盖特定方法?

即使它不是虚拟的,这仍然是允许的(至少在我使用的 Metrowerks 编译器中),你得到的只是一个关于隐藏非虚拟继承函数 X 的编译时警告。

0 投票
3 回答
10585 浏览

c# - How do you place a file in recycle bin instead of delete?

Programmatic solution of course...

0 投票
4 回答
766 浏览

c++ - CryptEncrypt 的合适替代品

我们的产品中存在这样一种情况,即长期以来,一些数据作为 SQL 字符串(选择 MS SQL 服务器或任何位置的 sybase SQL)存储在应用程序的数据库中,这些数据是通过 Windows API 函数CryptEncrypt 加密的。 (直接且可解密)

问题是 CryptEncrypt 可以在输出中产生 NULL,这意味着当它存储在数据库中时,字符串操作将在某些时候截断 CipherText。

理想情况下,我们希望使用一种算法,该算法将生成不包含 NULL 的 CipherText,因为这将对现有数据库造成最少的更改(将列从字符串更改为二进制以及处理二进制而不是字符串的代码)并且只需在数据库升级时解密现有数据并使用新算法重新加密。

该算法不需要是最安全的,因为数据库已经处于相当安全的环境中(不是开放网络/互网),但确实需要比 ROT13 更好(我几乎可以在脑海中解密现在!)

编辑:顺便说一句,将密文更改为密文的任何特殊原因?密文似乎使用更广泛......

0 投票
3 回答
1117 浏览

.net - 警告 C4341 -“XX”:有符号值超出枚举常量的范围

在编译我的 C++ .Net 应用程序时,我收到 104 个以下类型的警告:

XX 可以在哪里

  • WCHAR
  • 少量
  • 二进制
  • 图形用户界面
  • ...

无论我做什么,我似乎都无法删除这些警告。当我双击它们时,它会将我带到使用 OdbcParameters 的代码的一部分 - 当我尝试使用我的所有其他东西但没有 OdbcParameters 的测试项目时,它不会给出警告。

知道如何摆脱这些警告吗?他们从我实际上很难看到的代码中发出真正的警告——知道我的应用程序有 104 个警告,这让我有一种可怕的感觉!

0 投票
3 回答
7949 浏览

c++ - 在控制台应用程序中使用 ocx

我想快速测试一个ocx。如何在控制台应用程序中删除该 ocx。我在 CodeProject 中找到了一些教程,但不完整。

0 投票
5 回答
14858 浏览

c# - 将 C++ 枚举导入 C#

我目前正在创建一个需要与旧 C++ 应用程序交互的新 C# 项目。我需要在 C# 应用程序中使用的 C++ 应用程序中已经存在一个错误枚举。

我不想只在 C# 中重新声明枚举,因为如果文件没有一起更新,这可能会导致同步问题

话虽如此,我的问题是:有没有办法让我采用这样声明的枚举:

并在 C# 程序中使用它,如下所示:

0 投票
4 回答
7598 浏览

c++ - 如何为 QtWebKit 安装插件

我正在运行 Qt 4.5 商业快照,并想在我的QWebView. 是否有需要放置此文件的特定位置?我可以用 抓住它QWebPluginFactory吗?

0 投票
6 回答
4758 浏览

c++ - 如何将 linux 设备路径与 Windows 驱动器名称匹配?

我正在编写一个应用程序,它在某个阶段在 Linux 环境中执行低级磁盘操作。该应用程序实际上由两部分组成,一个在 Windows 上运行并与用户交互,另一个是从 LiveCD 运行的 linux 部分。用户选择 Windows 驱动器号,然后 linux 部分对相应的分区执行操作。问题是在 Windows 驱动器号(如 C:)和 linux 设备名称(如 /dev/sda1)之间找到匹配项。这是我目前认为丑陋的解决方案:

  • 在 Windows 中的某个预定义位置(即系统分区的根目录)中存储分区信息(即驱动器号、块数、驱动器序列号等)。

  • 从 /proc/partitions 读取分区列表。只获取那些具有 SCSI 或 IDE 硬盘驱动器主编号和将它们标识为真实分区而不是整个磁盘的次编号的分区。

  • 尝试使用 ntfs 或 vfat 文件系统安装它们。检查挂载的分区是否包含Windows应用程序存储的信息。

  • 找到由 Windows 应用程序编写的所需信息后,进行实际匹配。对于在 /proc/partitions 中找到的每个分区,获取驱动器序列号(通过 HDIO_GET_IDENTITY 系统调用)、块数(来自 /proc/partitions)和驱动器偏移量(/sys/blocks/drive_path/partition_name/start),将其与 Windows信息,如果匹配 - 将 Windows 驱动器号与 linux 设备名称一起存储。

这个方案有几个问题:

  • 这很丑陋。在 Windows 中写入数据,然后在 Linux 中读取数据会使测试成为一场噩梦。

  • linux 设备主编号仅与 IDE 或 SCSI 设备进行比较。这可能会失败,即在 USB 或 FireWire 磁盘上。可以添加这些类型的磁盘,但将应用程序限制为仅可能设备的已知子集似乎是个坏主意。

  • 看起来 HDIO_GET_IDENTITY 仅适用于 IDE 和 SATA 驱动器。

  • /sys/block hack 可能不适用于 IDE 或 SATA 驱动器以外的其他驱动器。

关于如何改进此架构的任何想法?也许还有另一种方法来确定 Windows 名称,而无需在 Windows 应用程序中写入所有数据?

PS 应用程序的语言是 C++。我无法改变这一点。

0 投票
2 回答
17272 浏览

c++ - 如何在 C++ 中制作一棵树?

如何在 C++ 中创建使用迭代器而不是指针的树数据结构?我在 STL 中找不到任何可以做到这一点的东西。我想做的是能够像这样创建和操作树:


谢谢,tree.hh 似乎正是我想要的。

如果这是为了获得保存任意索引类型的数据结构的好处,优化搜索并擅长插入,那么考虑使用映射。

映射是一个关联容器,其性能保证与树的性能保证相同:对数搜索、对数插入、对数删除、线性空间。在内部,它们通常被实现为红黑树,尽管这不是保证。尽管如此,作为 STL 用户,您应该关心的只是 STL 算法和数据结构的性能保证。无论它们是作为树木还是小绿人来实现,对你来说都无关紧要。

我不确定我是否需要地图,但感谢您提供的信息。我会记得尽可能使用地图而不是实现树。

0 投票
10 回答
856 浏览

c# - 从 Java/C# 到 C++ 的最佳方式是什么?

在我的大学里,我的大部分课程都是用 Java 编写的。我最近还在暑期实习中学习了 C#(和 Visual Studio 环境)。现在我正在参加计算机图形学入门课程,教授该课程的研究生更喜欢我们使用 C++ 通过 GLUT 访问 OpenGL 绑定。

有没有人有任何关于如何从 Java/C# 到 C++ 的良好过渡的好资源?显然指针将是一个大问题,但我应该注意的其他任何事情?任何教程、指南等都会非常有帮助!

谢谢!