草庐IT

可变性

全部标签

c++ - 如何将来自用户定义文字的可变字符模板参数转换回数字类型?

这个问题是因为thisone被问到的.C++11允许您为数字文字定义这样的文字:templateOutputTypeoperator""_suffix();这意味着503_suffix会变成这很好,虽然它的形式不是很有用。我如何将其转换回数字类型?这将变成进入constexpr503.此外,它还必须适用于浮点文字。会变成int5或float5.3在previousquestion中找到了部分解决方案,但它不适用于非整数:templateconstexprtpow(tbase,intexp){return(exp>0)?base*pow(base,exp-1):1;};templates

c++ - 如何将可变长度字符串从 RPC 服务器传递到客户端?

我正在实现一个Windows系统服务,它充当RPC服务器和一个相应的客户端,两者都是用C++编写的。我正在使用普通的WindowsRPC功能。将字符串从RPC客户端传递到服务器很容易。只需像这样在IDL文件中声明函数参数:[in,string]wchar_t*myStringMIDL将处理内存分配魔法。就像款待一样。返回修改后的客户端字符串也很容易:[in,out,string]wchar_t*myString不过,这需要我在客户端正确调整字符串的大小。问题:我需要从服务器返回字符串给客户端。我不知道在客户端上它们会有多大,所以在客户端上分配内存不是一个选项。我可以分配非常大量的内存,

具有相同名称的 C++ const 和可变函数

考虑以下代码。#includeusingnamespacestd;classObject{public:Object(){}voidPrint()const{coutPrint();return0;}输出是constconstmutableconstmutable我想知道,当面对许多具有相同名称的可变方法时,C++如何决定调用哪个方法? 最佳答案 print_obj(obj1);print_obj(obj2);要调用的函数根据传递对象的cv-qualifier(const/volatile)求值。请注意,cv-qualifiers在

c++ - 创建类的可变包装器

我有模板类ReadertemplateclassReader{typedefTtype;};特殊实现(派生类)具有带签名的方法Tread(IStream&,任意数量的参数,可能为零)即类IntegerReader公共(public)函数:templateclassIntegerReader:publicReader{public:Tread(IStream&stream);Tread(IStream&stream,Tmin,Tmax);Tread(IStream&stream,Tmin,Tmax,std::stringname);}现在我想创建一个包装器,它允许我创建另一个阅读器,并调

c++ - 将可变大小数组传递给 DLL 的选项有哪些?

我想知道如果我想将大小在运行时确定的数组传递给DLL函数,我有哪些选项。目前我在DLL中的函数签名看起来像#ifdefBUILDING_DLL#defineDBUILDING__declspec(dllexport)#else#defineDBUILDING__declspec(dllimport)#endifvoid__cdeclDBUILDINGmyFunc(constdoublet,constdoublex[],double*xdot);所以我传递的是在某个类中动态分配的普通旧数据类型,然后必须手动删除这些数据类型。我宁愿不必调用delete也不必担心内存管理,所以我想看看其他选

c++ - 将可变参数模板参数转发给多个类成员

以下安全吗?不会std::string是moved在第一类成员初始化之后?打印出来没问题,但我不确定。templateclassTest{public:templateTest(Args&&...args):m_one(newT(std::forward(args)...)),m_two(newT(std::forward(args)...))//m_one;std::unique_ptrm_two;};classC{public:C(inta,intb,conststd::string&c):m_a(a),m_b(b),m_c(c){std::coutt(1,2,"3");}我想这没

c++ - 修改 const 对象的可变成员有效吗?

在C++中,您现在可以拥有mutable成员。这给语言增加了一层“逻辑常量”。这些与只读数据有何关系-拥有一个mutable成员会阻止将const类放入.rodata部分吗?classFoo{mutableintbar;public:Foo():bar(0){}voidset(intx)const{bar=x;}};//Canthisbeinaread-onlysection?constFoofoo;intmain(void){//Isthiswell-defined?foo.set(5);} 最佳答案 是的,您可以修改const对

c++ - 指向可变模板静态函数的指针。如何?

我有一个代码:classFactory{public:templatestaticvoidtestFunc(Args&&...args){cout是否可以创建指向testFunc的指针?我所能做的就是这样定义它://mainvoid(*pFunc)()=&Factory::testFunc;pFunc();这行得通,但我不能像这样传递可变数量的参数:void(*pFunc)(WHAT_TO_TYPE_HERE?)=&Factory::testFunc;pFunc(10,false,'a',11.5);P.S.:使用省略号(...)一切正常。 最佳答案

c++ - 为什么在使用可变构造函数时必须创建类型别名?

我有一个采用N种类型的模板化基类:templateclassBase{};在该基类上使用protected继承时,templateclassDerived:protectedBase{//likeso...};我想另外包括基类的公共(public)构造函数:templateclassDerived:protectedBase{//createanaliasusingParent=Base;//getallconstructorsaswellusingParent::Parent;};这行得通。但是,为什么我必须包含Parent别名?没有它我似乎无法获得构造函数。以下尝试不起作用:tem

c++ - C++中可变参数构造函数的用途是什么?

考虑以下程序:#includestructTest{Test(...){std::cout我认为它是可变构造函数。C++标准是否说构造函数可以是可变的?这样的构造函数有什么用?允许可变构造函数的理由是什么? 最佳答案 让我们试着一一回答您的问题:Ithinkitisvariadicconstructor.你是对的。DoestheC++standardsaysthatconstructorcanbevariadic?IANALL,但是,我认为是的。为什么不?构造函数只是一个(成员)函数。Whatistheuseofsuchconstr