草庐IT

non_rtti_object

全部标签

c++ - 当返回 undefined object 类型引用的 C++ 函数的返回值未赋值时会发生什么?

考虑以下代码:classFoo;Foo&CreateFoo();voidBar(){CreateFoo();}在VisualStudio中,这将导致错误C2027,指出Foo是未定义的类型。在大多数其他编译器中,它编译得很好。仅当未分配CreateFoo的返回值时才会出现问题。如果我将行更改为:Foo&foo=CreateFoo();它在VisualStudio中编译良好。此外,如果Foo是定义的,而不仅仅是前向声明的,那么它将在没有赋值的情况下编译得很好。哪种行为应该是正确的?C++标准中是否有任何解决此问题的内容,或者这是留给实现的内容?我看了看,没有看到任何关于此的内容。更新:A

c++ - 在 C++ 中 : Is const reference means "read-only view of" or it requires immutability of object being referenced?

问题可以通过示例表述如下:这段代码有效吗?inta=1;constint&ca=a;++a;//对于MSVC和MinGW,上面的代码片段按预期工作:如果我查询ca后记,它返回2(即它被非常量引用更改)。但问题是:如何从标准的角度考虑这种情况?我们是否可以更改对象,我们有const引用(或者例如,我们必须将ca定义为constvolatile引用以使代码片段正确)?所以,如果上面的片段是正确的,那么这意味着,const引用并不能保证引用的对象是常量。它只是禁止我们通过给定的引用来更改它,即建立引用对象的“只读”View。这是正确的吗?编辑:感谢所有回答我问题的人。答案说明了事情,这对我来

c++ - 铿锵错误 : non-const lvalue reference cannot bind to incompatible temporary

我有一段代码可以在MSVC上正常工作,但无法用clang++编译voidMyCass::someMethod(){std::wstringkey(...);auto&refInstance=m_map.find(key);//errorhere}其中m_map定义为std::map>m_map;和clang提示non-constlvaluereferencecannotbindtoincompatibletemporary我有点了解正在创建一个临时文件,但不确定如何解决这个问题。有什么想法吗? 最佳答案 右值不能绑定(bind)到非

iphone - 在 Objective-C 中包装 C++ 库并不是隐藏 C++ 符号

我正在尝试用Objective-C包装一个C++库(用于SybaseUltralite),以便可以将该库导入到MonoTouch中。我创建了一个Objective-C库,并将编译后的C++库包含在这个项目中,libulrt.a。为了编译我的项目,我将路径设置为UserHeaderSearchPath以指向C++头文件所在的目录。然后我不得不将compilesourceas设置为Objective-C++。现在的问题是,虽然包装器库编译正确,但一旦我将它包含在另一个Xcode项目中,我必须再次将compilesourceas设置为Objective-C++否则使用我的包装器库的项目会出现

c++ - std::list of objects 效率

假设您有某个类的std::list。您可以通过两种方式制作此列表:1)std::listmyClassList;MyClassmyClass;myClassList.push_front(myClass);使用此方法,当您将对象传递给列表时,复制构造函数将被调用。如果该类有很多成员变量,并且您多次进行此调用,它的成本可能会很高。2)std::listmyClassList;MyClass*myClass=newMyClass();myClassList.push_front(myClass);这个方法不会调用类的复制构造函数。我不太确定在这种情况下会发生什么,但我认为该列表将创建一个新

c++ - if ('fstream object' ) 如何根据文件是否打开返回真值或假值?

我很好奇fstreamclass是如何简单地返回一个true或false值的将对象的名称放在条件语句中。例如……std::fstreamfileStream;fileStream.open("somefile.ext");if(!fileStream)//Howdoesthiswork?std::cout我问这个是因为如果我以类似的方式使用它,我希望我自己的类返回一个值。 最佳答案 它并不是真的等于真或假,而是它重载了!运算符以返回其状态。参见http://www.cplusplus.com/reference/iostream/i

gpt支持json格式的数据返回(response_format: ‘json_object‘)

Api.h5.chatCreateChatCompletion({model:'gpt-3.5-turbo-1106',token:'sk-f4fe8b67-fcbe-46fd-8cc9-fd1dac5d6d59',messages:[{role:'user',content:'使用json格式返回十二生肖,包含中文名和英文名,[{id:"1",enName:"",cnName:""}]',},],params:{n:1,response_format:{type:'json_object'},},}).then((res)=>{if(res.code===200){console.log(r

C++1y/C++14 : Converting static constexpr array to non-type template parameter pack?

假设我有一个静态存储持续时间的constexpr数组(已知范围):constexprTinput[]=/*...*/;我有一个需要打包的输出类模板:templatestructoutput_template;我想像这样实例化output_template:usingoutput=output_template;一种方法是:templatestructmake_output_template{templatestaticconstexproutput_templatef(std::index_sequence){return{};};usingtype=decltype(f(std::m

c++ - C++ POD 类型是否具有 RTTI?

据我了解RTTI在各种C++编译器(例如GCC)中的实现方式,指向type_info数据的指针存储在每个类的vtable数据中。也如前所述here,POD类型可能没有vtable。但是,如果POD类型可能没有vtable,那么指向type_info的指针存储在哪里?我知道它是特定于实现的,但最好了解C++编译器(例如GCC)的内部结构。 最佳答案 有两种类型(对于RTTI而言):多态类型和非多态类型。多态类型是一种本身或从基类继承的具有虚函数的类型。非多态类型是一切;这包括POD类型,但也包括许多其他类型。如果你有一个指向多态类型T

c++ - 从 C++ 中同一个类的另一个成员函数中调用成员函数,Objective C

考虑以下几点:classA{//datamembersvoidfoo(){bar();//isthispossible?orshouldyousaythis->bar()notethatbarisnotstatic}voidbar(){}}//endofclassA如何从另一个内部调用成员函数?静态函数如何影响“this”的使用。应该在对象上调用函数吗? 最佳答案 Nawaz是正确的:'this'是隐含的。一个异常(exception)是如果foo是静态函数,因为在静态函数中没有“this”。在那种情况下,您不能使用bar()除非b