Questions tagged [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.
std::cin 输入带空格?
用户想要输入“Hello World”。但cin
在两个词之间的空格处失败。我怎样才能cin
完全接受Hello World
?
我实际上是在用结构做这个,cin.getline
但似乎不起作用。这是我的代码:
这会产生错误。有任何想法吗?
如何制作包含“私人”?
有什么方法可以在一个类中包含一个文件,以便它可以使用它,但不允许包括该类在内的任何东西进入范围以能够使用它?为了简化,假设我在一个名为 IO 的类中有 iostream 标头,并且我使 IO 能够使用 cout 函数编写内容,但不允许包含 IO 的任何内容能够使用 iostream 标头中的任何内容。这不是我想做的,但我需要弄清楚这一点,所以我不会“双重定义”事情。
访问 QPushbutton 单击槽中的坐标
我有一个带有图像的 QPushButton,该图像具有两个我想在单击时以不同方式处理的区域。由于图像上的定位,我不能真正为这两个图像使用单独的按钮。
我想做的是,在我处理点击的插槽中,让它检查点击的坐标以确定点击了哪个区域。
有没有办法访问这个?
为什么这段代码会产生竞争条件?
这是我第一次尝试使用std::future
.
我要同时解析三个不同的文件。三个功能分别做到这一点。称为和。parseSentences
_ 它们中的每一个都使用一个非常简单的 lambda 函数在单独的线程中启动: ,其中是一个静态变量,函数是我之前命名的三个函数之一。parseTags
parseLinks
std::async
[]() { parser->function(); }
parser
现在,当我在 gdb 中运行我的程序时,在破坏一个std::future
局部变量时会发生分段错误。那时有 2 个线程正在运行。线程#1 的调用堆栈在这里。线程#2 的调用堆栈在这里。
请注意,this
第一个调用堆栈中的指针为空,导致分段错误。
如果有人有线索,我将不胜感激。
KeyDow 上的 Windows 应用商店应用 OEM 密钥
我正在编写一个 Windows 应用商店应用程序,为了使功能正常工作,我需要处理 +、-、*、/、?、!的 OEM 键。等在 KeyDown 事件处理程序中。但是 VirtualKey 类没有包含这些键,我找不到任何可以帮助的参考。如何识别这些密钥?
c++ .h 和 .cpp 文件 - 关于方法
你好。
如何在 .h 文件中定义 bool 方法并在 cpp 文件中使用它?我有
我的.h
我的.cpp
不工作。为什么?
模板函数的动态调度?
是否可以在运行时决定调用哪个模板函数?就像是:
C++ 中的定宽整数
有时我需要使用固定宽度的整数与 PLC 等外部设备进行通信。我还使用它们来定义位掩码并执行图像数据的位操作。AFAIK C99 标准定义了固定宽度的整数,如 int16_t。但是我使用的编译器 VC++ 2008 不支持 C99 并且 AFAIK 微软不打算支持它。
我的问题是在 C++ 中使用固定宽度整数的最佳做法是什么?
我知道 VC++ 定义了像 __int16 这样的非标准固定宽度整数,但我对使用非标准类型犹豫不决。下一个 C++ 标准会定义固定宽度的整数吗?
Pimpl + QSharedPointer - 析构函数 = 灾难
昨天我遇到了痛苦,这让我沮丧了 24 小时。问题归结为随机发生的意外崩溃。更复杂的是,调试报告也有绝对随机的模式。更复杂的是,所有调试跟踪都导致随机Qt 源或本地 DLL,即每次都证明问题不在我这边。
这里有一些这样可爱的报告的例子:
正如您所看到的,这些东西非常讨厌,它没有提供任何有用的信息。但是,有一件事我没有注意。这是编译期间的一个奇怪的警告,也很难用眼睛捕捉到:
实际上,我只是将这个警告作为最后的手段,因为在如此绝望地寻找错误的过程中,代码已经感染了字面上的日志死亡。
仔细阅读后,我想起了,例如,如果使用std::unique_ptr
或std::scoped_ptr
用于Pimpl - 肯定应该提供析构函数,否则代码甚至无法编译。但是,我还记得它std::shared_ptr
不关心析构函数并且没有它也可以正常工作。这也是我没有注意这个奇怪警告的另一个原因。长话短说,当我添加析构函数时,这种随机崩溃停止了。看起来 QtQSharedPointer
与std::shared_ptr
. 我想如果 Qt 开发人员将此警告转化为错误会更好,因为这样的调试马拉松根本不值得花时间、精力和精力。
我的问题是:
- 有什么问题
QSharedPointer
?为什么析构函数如此重要? - 为什么在没有析构函数的情况下会发生崩溃?这些对象(使用Pimpl +
QSharedPointer
)是在堆栈上创建的,并且在它们死后没有其他对象可以访问它们。然而,坠机发生在他们死后的某个随机时间段内。 - 有没有人遇到过这样的问题?请分享你的经验。
- Qt 中是否还有其他类似的陷阱——我必须知道这些陷阱以确保将来保持安全?
希望这些问题和我的一般帖子能帮助其他人避免我过去 24 小时去过的地狱。
在 C++ 基类构造函数中注入代码
我正在派生一个可从 C++ 库中获得的类,并且我的子类的构造函数只有在我在调用基类构造函数之前执行一些代码时才能正常工作。(是的,我知道,糟糕的设计,但我无法影响我正在使用的库的工作方式。)
如果基类构造函数接受参数,这样做实际上很简单:
现在,当我构造 B 的实例时,inject()
会在之前调用A::A()
。但是当基类ctor没有参数时,有没有办法做到这一点?