Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。

8
未定义对静态const int的引用
我今天遇到了一个有趣的问题。考虑以下简单示例: template <typename T> void foo(const T & a) { /* code */ } // This would also fail // void foo(const int & a) { /* code */ } class Bar { public: static const int kConst = 1; void func() { foo(kConst); // This is the important line …
79 c++  gcc 


24
在经过排序和旋转的数组中搜索
在准备面试时,我偶然发现了一个有趣的问题: 您将得到一个经过排序然后旋转的数组。 例如: 让arr = [1,2,3,4,5]排序 将其向右旋转两次以给出[4,5,1,2,3]。 现在,如何最好地在此排序后的旋转数组中进行搜索? 可以取消旋转数组,然后进行二进制搜索。但这并不比在输入数组中进行线性搜索更好,因为两者都是最差情况的O(N)。 请提供一些指示。我为此搜索了很多特殊算法,但找不到任何算法。 我了解C和C ++。
79 c++  c  arrays  algorithm 


4
C ++重载虚函数警告
当编译以下代码时,clang发出警告: struct Base { virtual void * get(char* e); // virtual void * get(char* e, int index); }; struct Derived: public Base { virtual void * get(char* e, int index); }; 警告是: warning: 'Derived::get' hides overloaded virtual function [-Woverloaded-virtual] (当然需要启用上述警告)。 我不明白为什么。请注意,取消注释Base中的同一声明会关闭警告。我的理解是,由于两个get()函数具有不同的签名,因此无法隐藏。 c是正确的吗?为什么? 请注意,这是在运行最新版本Xcode的MacOS X上。 clang --version Apple LLVM version 5.0 …

7
QtCreator:找不到有效的工具包
仅在Windows 7上安装了IDE。我想创建一个Plain C ++项目(Non-QT项目)。但是我得到一个错误:找不到有效的工具包。当我单击选项->套件时,我看到了桌面(默认)套件,它没有显示任何错误。 是否由于未安装Qt库而收到错误消息?如果是这样,我有什么办法可以绕过下载/安装而仅使用IDE?
79 c++  qt  ide  qt-creator 

2
“字段的类型不完整”错误
我的头文件中有一个错误: field "ui" has incomplete type. 我尝试过创建ui一个指针,但这不起作用。我认为我不需要这样做,因为我已经MainWindowClass在名称空间中定义了my Ui。这是我的mainwindow.h: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtGui/QMainWindow> #include "ui_mainwindow.h" namespace Ui { class MainWindowClass; } class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0, Qt::WFlags flags=0); ~MainWindow(); public slots: void slideValue(int); private: Ui::MainWindowClass ui; //error line }; #endif // MAINWINDOW_H
79 c++ 



1
使用原始存储时如何模​​拟EBO?
我有一个实现低级泛型类型时使用的组件,该泛型类型存储任意类型的对象(可能是也可能不是类类型),该对象可能为空以利用空基础优化: template <typename T, unsigned Tag = 0, typename = void> class ebo_storage { T item; public: constexpr ebo_storage() = default; template < typename U, typename = std::enable_if_t< !std::is_same<ebo_storage, std::decay_t<U>>::value > > constexpr ebo_storage(U&& u) noexcept(std::is_nothrow_constructible<T,U>::value) : item(std::forward<U>(u)) {} T& get() & noexcept { return item; } constexpr const T& …
79 c++  c++14 


10
像ac数组一样如何初始化'const std :: vector <T>'
有没有一种优雅的方法来创建和初始化const std::vector&lt;const T&gt;类似const T a[] = { ... }的固定数目(很少)的值? 我需要经常调用一个期望vector&lt;T&gt;,但是在我的情况下,这些值永远不会改变。 原则上我想到了类似 namespace { const std::vector&lt;const T&gt; v(??); } 因为v不会在此编译单元之外使用。
79 c++  stl 


12
C ++ 11中未使用的参数
在c ++ 03及更早版本中,要禁用有关未使用参数的编译器警告,我通常使用以下代码: #define UNUSED(expr) do { (void)(expr); } while (0) 例如 int main(int argc, char *argv[]) { UNUSED(argc); UNUSED(argv); return 0; } 但是宏并不是c ++的最佳实践,因此。c ++ 11标准会出现更好的解决方案吗?我的意思是可以摆脱宏吗? 谢谢大家!

16
用C或C ++编写好的getos的示例[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 在这个线程中,我们看一下goto在C或C ++中良好使用的示例。灵感来自人们以为我在开玩笑而投票赞成的答案。 摘要(标签从原始更改为意图更加清晰): infinite_loop: // code goes here goto infinite_loop; 为什么比其他更好: 具体。 goto是导致无条件分支的语言构造。替代方案取决于使用支持条件分支的结构,并带有退化的始终为真的条件。 标签记录了意图,没有额外的注释。 读者不必扫描介入的代码以获取早期的breaks(尽管无原则的黑客仍然有可能continue用Early进行模拟 goto)。 规则: 假装傻瓜没有赢。可以理解,以上内容不能在实际代码中使用,因为它违反了既定的习惯用法。 假设我们都听说过“ Goto认为有害”,并且知道goto可以用来编写意大利面条式代码。 如果您不同意一个示例,则仅凭技术优势对其进行批评(“因为人们不喜欢goto”不是技术原因)。 让我们看看是否可以像大人一样谈论这件事。 编辑 这个问题似乎已经解决了。它产生了一些高质量的答案。感谢所有人,尤其是那些认真对待我的小循环榜样的人。大多数怀疑论者担心缺乏障碍的范围。正如@quinmars在评论中指出的那样,您始终可以在循环主体周围放置括号。我顺便指出for(;;),并while(true)没有给你免费任括号(并忽略他们可能会导致错误伤脑筋)。无论如何,我不会在这个琐事上浪费您的脑力-我可以忍受无害和惯用的语言for(;;),while(true)(如果我想继续工作,也可以)。 考虑到其他答复,我看到许多人认为goto您总是必须用另一种方式重写。当然,您可以goto通过引入循环,额外的标志,嵌套的ifs或其他方法来避免使用a ,但是为什么不考虑goto也许这是最好的工具呢?换句话说,人们准备忍受多少丑陋,以避免将内置语言功能用于其预期目的?我的观点是,即使添加一个标志也付出了很高的代价。我喜欢用变量来表示问题或解决方案领域中的事物。goto仅仅避免'不会削减它。 我将接受第一个答案,该答案给出了用于分支到清除块的C模式。IMO,这是goto所有已发布答案中最有力的理由,当然,如果您以仇恨者必须避免的扭曲来衡量它,那么当然。
79 c++  c  goto 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.