草庐IT

c++ - 在类定义之外使用 enable_if 实现函数

所以基本上,我现在有一个非常基本的通用类,目前正在测试type_traitsheader。我目前正在尝试制作一个函数来处理某些类型,即现在的算术类型。#includetemplateclassTest{public:templatetypenamestd::enable_if::value>::typeprint();};该函数完美运行且仅适用于算术类型。但我喜欢保持我的类整洁,只有它们有原型(prototype),而函数实现在类之外。使用标准模板即voidtest();templatevoidTest::test(){}这很简单,我知道怎么做,但我不知道如何用“std::enable

c++ - 在类中存储指针或对象?

只是一个设计/优化问题。什么时候存储指针或对象,为什么?例如,我相信这两种方法都有效(除非出现编译错误):classA{std::unique_ptrobject_ptr;};A::A():object_ptr(newObject()){}classB{Objectobject;};B::B():object(Object()){}我相信在堆栈或堆上实例化时会出现一个区别?例如:intmain(){std::unique_ptra_ptr;std::unique_ptrb_ptr;a_ptr=newA();//(*object_ptr)onheap,(*a_ptr)onheap?b_p

c++ - 模板类中的模板构造函数必须在类定义中定义?

假设我写了一个带有模板构造函数的模板类,就像那样。templateclassX{templateX(Xx){}};编译正常。但是,当我尝试在模板声明之外定义构造函数时,如下所示:templateclassX{templateX(Xx);};templateX::X(Xy){}我收到以下错误:error:invaliduseofincompletetype‘classX’为什么?难道不能在类声明之外定义模板类的模板构造函数吗? 最佳答案 您有两层模板,必须分别指定它们。templatetemplateX::X(Xy){}

c++ - 在类中使用枚举时,它会是公开的吗?为什么?

我正在为我正在学习的类(class)使用枚举,我正在使用Google查找示例以确保我正确使用了枚举。我去了几个网站,包括MSDN网站,枚举列在公共(public)而不是私有(private)下。我一直认为数据成员是私有(private)的。我偏离基地了吗?如果是,为什么? 最佳答案 枚举是一种类型,而不是数据成员。如果类的用户需要知道它,你应该公开它;否则,将其设为私有(private)。用户需要了解它的典型情况是将其用作公共(public)成员函数的参数类型。 关于c++-在类中使用枚

C++ g++ 在类头文件中找不到 'string' 类型

我是C++的新手,但我不明白为什么这不会为我编译。我在Mac上运行,使用Xcode编码,但我正在使用来自bash的我自己的makefile进行构建。无论如何,即使我已经包含了.欢迎任何帮助。代码://#include//I'vetriedithere,too.I'mfoggyonincludesemantics,butIthinkitshouldbesafeinsidethecurrentpreprocessor"branch"#ifndefAPPCONTROLLER_H#defineAPPCONTROLLER_H#includeclassAppController{//etc.pub

c++ - 在类中使用返回 auto 的静态 constexpr 成员函数

我正在尝试解决我遇到的MSVC2015中的错误(请参阅此问题:wrongtypedeductionoffunctionsignature).所以我想到了这个:#includenamespacewreg{usingt_oshandle=HKEY;structt_api{staticconstexprautofnc_open_key(){return::RegOpenKeyExA;}//thisdoesn'tcompile:staticconstexprautoopen_key=fnc_open_key();//thesedon'tcompileeither://staticconstex

c++:使用模板在类中定义可变长度数组

我正在尝试构建一个类MapV2。在类中,我希望有一个Cell对象数组作为私有(private)成员(Cell是另一个类)。我正在尝试获取它,以便map的大小由与构造函数一起使用的模板参数分配。即,我正在尝试获得类似于以下内容的内容:constsize_tarraySize=12;MapV2myMapV2;这是我的文件Map.h:#pragmaonce#include#include"Cell.h"templateclassMapV2{public:MapV2();~MapV2();private:CellmyMapV2[M*N];};这是Map.cpp:#include#include

c++ - 在类模板中推导模板成员函数

为什么不能T从fn推导出来下例中的签名?templatestructClass{templateClass&operator&,constT&)){return*this;}};structOt{};templatevoidfn(constClass&,constOt&){}intmain(){Class()相比之下,下面的例子没有operator成为正式成员(member)是合法的:templatestructClass{Class&operator&)){return*this;}};structOt{};templatevoidfn(constClass&){}intmain()

c++ - 模板:只有在类有方法时才执行

我想编写一个函数来执行某个模板类的方法,但如果该类没有它,也应该可以正常编译。在那种情况下,它不应该调用该函数。structA{voidfunc(){}};structB{};templatevoidanotherFunc(Tt){//dot.func()hereifTimplementsfunc,justdonothingifitdoesn't.}这有可能吗? 最佳答案 //type_sinktakesatype,anddiscardsit.type_sink_tisaC++1ystyleusingaliasforittempla

c++ - 在类的洋葱中搜索

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭4年前。给定一个整数模板参数Key,搜索方法应该在编译期间提取一层具有key==Key的洋葱。如何修复搜索方法?测试(也在godbolt.org)#includeclassA{public:staticconstexprintkey=0;templateconstexprauto&search()const{return*this;}};templateclassB{public:staticconstexprintkey=P: