草庐IT

char_type

全部标签

c++ - 是否可以根据type_info创建对象?

差不多就是标题:可以根据type_info创建对象吗?这样做的目的是推迟对象的创建。例如,这是原始的“未延迟”代码:Foo*a=newFoo();Bar*b=newBar();这是延迟的://Storetypeindicesintoavectorstd::vectortypes;types.push_back(std::type_index(typeid(Foo)));types.push_back(std::type_index(typeid(Bar)));//Iteratethroughvector,createobjects?Isitpossible?如果这不可能,是否有任何其他

c++ - 在模板参数中使用时,type_trait<T>{} 中的 {} 的作用是什么?

我经常在模板代码中看到此{}的出现。我不确定我明白它在做什么。例如:std::enable_if_t{}&&!std::is_same{}>>这里的{}是什么?它是在实例化类型吗?模板参数是什么意思?据我所知,实例化一个类型意味着创建一个对象。您如何在这种情况下创建对象?它只是创建一个虚拟对象吗?为什么要这样做?这样做的意义和目的是什么? 最佳答案 在这种情况下,type_trait{}相当于type_trait::value.您的示例等效于以下内容:std::enable_if_t::value&&!std::is_same::v

c++ - "Class type redefinition"头文件和源文件之间的错误

所以我遇到了一个问题,我确信有一个非常明显的解决方案,但我似乎无法弄清楚。基本上,当我尝试在我的头文件中进行类定义并在我的源文件中进行实现时,我收到一条错误消息,提示我正在重新定义我的类。使用VisualC++2010Express。确切错误:“错误C2011:‘节点’:‘类’类型重新定义”示例代码如下:节点.h:#ifndefNODE_H#defineNODE_H#includeclassNode{public:Node();Node*getLC();Node*getRC();private:Node*leftChild;Node*rightChild;};#endif节点.cpp:

C++ 将 char 转换为 const char *

我正在尝试使用beginthreadex创建一个线程,该线程将运行一个以char作为参数的函数。不过,我不擅长C++,而且我不知道如何将char转换为constchar,beginthreadex需要它作为其参数。有没有办法做到这一点?我发现很多关于将char转换为constchar的问题,而不是转换为constchar*。 最佳答案 chara='z';constchar*b=&a;当然,这是在栈上。如果你需要它在堆上,chara='z';constchar*b=newchar(a);

Content-Type:application/x-msexecl;是干什么的?底层原理是什么?

Content-Type:application/vnd.ms-excel是用于设置HTTP响应头中的Content-Type字段,指定返回的内容类型为MicrosoftExcel文件(.xls)。Content-Type是HTTP协议中的一个字段,用于指定传输的数据的类型和格式。通过设置Content-Type头部字段,服务器可以告知客户端接收到的数据的类型,以便客户端正确处理和解析数据。application/vnd.ms-excel是指定MicrosoftExcel文件类型的MIME类型。MIME(MultipurposeInternetMailExtensions)是一种标准化的数据格

C++ 非类型模板参数 const char*

假设我们有templatestructA{};//staticstorageconstchara[]="asd";constchar*p="asd";这个实例化A{};编译器没问题。这是可以理解的——数组a衰减为指向第一个元素的指针。但是如果我们像这样用p实例化AA{};编译器报错:error:non-typetemplateargumentoftype'char*'isnotaconstantexpression为什么标准不允许指定类型为constchar*的命名变量或只是字符串文字"asd",顺便说一句,它本身是左值,作为模板参数? 最佳答案

c++ - const char* 与 C++ 双重翻译问题

我有两个使用同一个库的示例应用程序,它们之间的主要区别在于一个使用qt而另一个应用程序是控制台应用程序。在公共(public)库中,我有这个测试代码:doubletest=0.1;doubletest2=atof("2.13134");doubletest3=atof("1,12345");如果我使用非qt应用程序,则值为:test=0.10000000000001test2=2.1323399999999999998test3=1//Thisistheexpectedresultusinga','asdelimitationcharacter但是对于qt应用程序:test=0.100

c++ - std::array<char, N> 的大小是多少?

这个问题在这里已经有了答案:Isthesizeofstd::arraydefinedbystandard(1个回答)关闭8年前。C++标准对sizeof(std::array)有何规定?应该是(对于某个常量N)?在commenttoadifferentquestion中,有人提到std::array并不总是“堆栈分配”。该评论是对另一条评论的回应,该评论推测为std::array设置了一个太大的常量。声明为局部变量的变量可能会由于“堆栈分配”变量的资源不足而导致程序中止。我假设后续评论意味着std::array是可能的以某种方式切换到动态分配模式。我可以想象,可能会有某种SFINAE可

c++ - std::hash 值在 char* 值上而不是在内存地址上?

如本link所述:ThereisnospecializationforCstrings.std::hashproducesahashofthevalueofthepointer(thememoryaddress),itdoesnotexaminethecontentsofanycharacterarray.这意味着使用相同的char*值,可以产生不同的哈希码。例如,有这样的代码://MOKandMOVaretemplateargumentsvoidemit(MOKkey,MOVvalue){autoh=hash()(key);cout这是通过调用4次emit()对相同的key(使用MO

c++ - 尝试与 typedef 交 friend 时出现 "elaborated type refers to typedef"错误

假设我有以下代码(一个简单的CRTP类层次结构)。我想对基类类型进行typedef以节省自己的输入(在我的实际代码中,我多次使用基类类型并且基类采用多个模板参数),并且我需要与基类交friend,因为我想保留实现私有(private)。templateclassBase{public:voidfoo(){*static_cast(this)->foo_i();}};templateclassDerived:publicBase>{public:typedefclassBase>BaseType;private://Thishereistheoffendinglinefriendclas