草庐IT

c++ - 包括头文件与实现文件中的文件(C++)

在头文件中包含头文件与在实现文件中包含头文件有什么区别?这个例如://test.h#include"globals.h"classTest{Test();};对比//test.cpp#include"globals.h"Test::Test(){} 最佳答案 一般原则是您希望尽可能减少依赖性,因此:如果您的接口(interface)(.h)引用给定header中的任何内容,则该header需要#included在接口(interface)(.h)中如果您只在您的实现(.cpp)(而不是您的界面)中引用给定的header,那么您应该只

c++ - 在 1_54 中破坏了 boost 变体?

我认为Boost::variant在1_54中被破坏了。我正在尝试将std::unique_ptr用作boost变体中的有界类型。根据1_54文档,变体需要可复制构造或可移动构造。http://www.boost.org/doc/libs/1_54_0/doc/html/variant/reference.html所以我在我的代码中实现了移动构造函数并禁用了复制构造函数。当我尝试将某些内容分配给变体对象时,它无法编译。我尝试了各种不同的方法,包括使用std::move将数据分配给变体对象,但似乎没有任何效果。根据编译错误堆栈跟踪,我确定问题出在variant.hpp中,它试图备份rhs

c++ - 传递给 std::sort 时,全局函数比仿函数或 lambda 慢

我做了一个小测试来检查全局函数/仿函数/lambda作为std::sort函数的比较器参数的性能。Functor和lambda具有相同的性能。我惊讶地发现,看起来是最简单回调的全局函数却慢得多。#include#include#include#include#include#include#include#include#includeusingnamespacestd;constintvector_size=100000;boolCompareFunction(conststring&s1,conststring&s2){returns1[0]v(vector_size);for(s

c++ - 使用 pimpl 的类移动不会编译

在下面的例子中,怎么可能正确调用了~CImpl,但是当需要移动类时,编译器却说它有一个不完整的类型?如果将Impl的声明移动到header,它会起作用,我的问题是为什么析构函数被调用得很好,所以看起来类型不完整,但移动时出现问题。文件:C.hpp#includeclassImpl;classC{public:C();~C();C(C&&)=default;C&operator=(C&&)=default;std::unique_ptrp;};文件C.cpp#include"C.hpp"#includeusingnamespacestd;classImpl{public:Impl(){}

c++ - 错误 C1083 : Cannot open include file: 'FL/Fl.h' : No such file or directory

首先,我在这里还是新手,因此不知道如何格式化代码以使其在这个问题中看起来很整洁,我希望这是可以接受的。我遵循Stroustrup的编程原则和实践。您可能猜到问题是什么……是的FLTK安装。我已仔细按照所有步骤在VSC++2013中构建项目;第1204-1206页。(我已经成功地完成了附录C,与std_lib_facilities.h有关)。我正在尝试构建以下win32项目,如书中所示:#include#include#includeintmain(){Fl_Windowwindow(200,200,"Windowtitle");Fl_Boxbox(0,0,200,200,"Hey,Im

c++ - libstdc++ 的 make_shared 布局是否在 gcc 4.x 和 gcc 6.x 之间发生了变化?

考虑以下由三个文件组成的最小示例:foo.h:#pragmaonce#includestructX{uint64_ti=0xdeadbeefdeadbeefULL;};voidfoo();foo.cxx:#include"foo.h"voidfoo(){std::make_shared();}main.cxx:#include#include"foo.h"templatestd::shared_ptrstd::make_shared();intmain(){foo();}然后用不同版本的gcc编译这两个翻译单元:$g++-4.8.2-g-std=c++11-O0-cfoo.cxx-of

c++ - Stroustrup 的 Simple_window.h

我试图让图形示例从Stroustrup的原则和实践...C++中工作,但无济于事(目前)。我已经安装了fltk的东西,并且知道它工作正常,因为我设法使用他的书的附录中建议的程序来显示一个窗口:#include#include#includeintmain(){Fl_Windowwindow(200,200,"titlehere");Fl_Boxbox(0,0,200,200,"Hey,hellowrld");window.show();returnFl::run();}但是,我自己尝试使用他的Simple_window.h(可以在他的网站上找到)会给出“对‘Window’的引用不明确”

c++ - 如何使 dumpObjectInfo 打印调试信息?

我想使用dumpObjectInfo函数打印对象信息的转储,但没有打印任何内容。下面是一个使用Qt的C++程序:$catmain1.cpp#include#include#include#include"a.h"intmain(){Aa;Bb;QObject::connect(&b,SIGNAL(sendText(QString)),&a,SLOT(printText(QString)));b.sendSignal();qDebug()有如下.pro文件(在CONFIG中设置Debug模式):$catqt.pro#####################################

c++ - 1 字节整数数据类型

我写了下面的代码:#include#include#includeusingnamespacestd;intmain(){uint8_tc;cin>>hex>>c;cout但是当我输入c(12的十六进制)时,输出也是c。我本来期待12。后来我才知道:uint8_tisusuallyatypedefforunsignedchar.Soit'sactuallyreadingcasASCII0x63.是否有一个1字节整数在执行I/O时表现为整数而不是字符? 最佳答案 据我所知不是。您可以使用更宽的整数类型执行I/O,并根据需要使用范围检查

c++ - 接受单个文件或单个目录的 QFileDialog

是否可以显示一个QFileDialog,用户可以在其中选择文件或目录?QFileDialog::getOpenFileName()只接受文件,而QFileDialog::getExistingDirectory()只接受目录,但我需要显示一个可以接受文件的对话框文件或目录(这对我的程序有意义)。QFileDialog::Options没有任何希望。 最佳答案 QFileDialog目前不支持这个。我认为这里的主要问题是FileMode不是Q_FLAGS并且这些值也不是2的幂,因此,您无法通过编写此代码来解决此问题。setFileMo