草庐IT

c++ - 我怎样才能使 C++ 更喜欢匹配父类重载而不是模板?

classParent{};classChild:publicParent{};classFoo{public:Foo(Parent&){};templateFoo(constT&);};intmain(){Childc;Foofoo(c);}这会产生链接器错误,因为foo的构造函数选择templateFoo::Foo(constT&)而不是Foo::Foo(Parent&).如果c类型为Parent而不是Child,这使用非模板构造函数和链接没有问题。我可以解决这个问题Foofoo((Parent&)c);但我不想那样做。为什么C++更喜欢使用模板而不是隐式转换c至Parent&?我

c++ - 我怎样才能让位域以正确的顺序排列我的位?

首先,有问题的应用程序总是在同一个处理器上,编译器总是gcc,所以我不担心位域不可移植。gcc布置位域,使得第一个列出的域对应于一个字节的最低有效位。所以下面的结构,a=0,b=1,c=1,d=1,你得到一个字节值e0。structBits{unsignedinta:5;unsignedintb:1;unsignedintc:1;unsignedintd:1;}__attribute__((__packed__));(实际上,这是C++,所以我说的是g++。)现在假设我希望a是一个六位整数。现在,我明白为什么这行不通了,但我编写了以下结构:structBits2{unsignedint

C++ 我怎样才能改进这个模板元程序来返回包含大小的数组?

我有一个名为choose_literal的实用程序它选择编码为char*,wchar_*,char8_t*,char16_t*,char32_t*的文字字符串取决于所需的类型(选择)。看起来像这样:templateconstexprautochoose_literal(constchar*psz,constwchar_t*wsz,constCHAR8_T*u8z,constchar16_t*u16z,constchar32_t*u32z){ifconstexpr(std::is_same_v)returnpsz;ifconstexpr(std::is_same_v)returnwsz;

c++ - 我怎样才能与其他人无误地分享我的 SFML 游戏?

所以,我用C++/SFML完成了一个游戏,我想将它发送给某人,但是当我发送它时出现错误:我在另一台计算机上测试了需要SFMLDLL的exe,它告诉我libstdc++-缺少6.dll,所以我添加了它,然后再次尝试,它告诉我还缺少其他dll,这很尴尬。我如何才能在没有所有这些错误和丢失DLL的情况下共享我的游戏? 最佳答案 你可以使用DependencyWalker(depends.exe)来查找您的应用程序正在使用的所有dll-s。它仍然需要一些反复试验来发现你需要的,但至少你有一个可以开始的地方。您很可能需要编译器提供的dll和您

c++ - 如果不从派生构造函数调用基类构造函数会怎样?

是否总是需要从派生类构造函数调用基类构造函数?如果您不调用它会发生什么? 最佳答案 假设您正在谈论C++(无论如何,这在大多数其他语言中应该是相似的),如果您不显式调用基类的构造函数,它的默认构造函数将被自动调用(如果存在;如果不,编译器会引发错误)。 关于c++-如果不从派生构造函数调用基类构造函数会怎样?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4360938/

c++ - 我怎样才能简单地使用无法识别的字符?

多亏了BoostSpirit库,我设法解析了一个pgn文件,但是一旦出现一些我没有“预料到”的字符,它就会失败。这是我的Spirit语法:#include#include#includeBOOST_FUSION_ADAPT_STRUCT(loloof64::pgn_tag,(std::string,key),(std::string,value))BOOST_FUSION_ADAPT_STRUCT(loloof64::game_move,(unsigned,move_number),(std::string,move_turn),(std::string,white_move),(st

c++ - 我怎样才能完美地将参数转发给 STL 集合?

我怎样才能完美地将创建对象的参数转发给STL集合?我想避免不必要的拷贝。虽然我可以通过存储指针来避免这种情况,但我不想使用动态内存。structMyFatClass{explicitMyFatClass(inta){...}...};std::vectorrecords;records.emplace_back(MyFatClass(1000));//HowcanIavoidthistemporaryobject? 最佳答案 使用std::vector::emplace_back时实际上不需要创建临时文件,这正是emplace_ba

c++ - 如果未存储函数返回的指针会怎样?

有一个函数返回一个指针(任何类型),如果我在调用函数时不存储指针,会发生什么?在这种情况下,该函数仍会返回一个指针吗?如果是,那么是否会因为我没有释放分配的内存而导致内存泄漏?以下面的代码为例:int*testfunc(){int*a=newint();return(a);}intmain(){testfunc();return(0);} 最佳答案 绝对会发生内存泄漏。您需要平衡所有对new的调用与返回指针上的delete。C++为您提供了一些类来帮助您管理该删除:请参阅std::unique_ptr。本质上,std::unique

Proteus -模拟串口被关闭后怎样打开

Proteus-模拟串口被关闭后怎样打开点击恢复弹出窗口,即可重新打开

c++ - 我怎样才能做 llvm 链接时间优化

我编译了一个C++程序,使用以下示例。clang++-O4-emit-llvmfile1.cpp-c-ofile1.bcclang++-O4-emit-llvmfile2.cpp-c-ofile2.bcllvm-linkfile1.bcfile2.bc我如何在这里执行链接时间优化? 最佳答案 使用opt:clang++-O4-emit-llvmfile1.cpp-c-ofile1.bcclang++-O4-emit-llvmfile2.cpp-c-ofile2.bcllvm-linkfile1.bcfile2.bc-oall.bco