草庐IT

definition

全部标签

c++ - 错误 : C2988: unrecognizable template declaration/definition

我的两个模板的标题中出现错误。两者都有类似的声明和定义如下:templatevoidsetVideoCodecOption(T1AVCodecContext::*option,T2(CR2CVideoCodecSettings::*f)()const);templatevoidEncoderPrivate::setVideoCodecOption(T1AVCodecContext::*option,(CR2CVideoCodecSettings::*f)()const){T2value=(m_videoSettings.*f)();if(value!=-1){m_videoCodecC

c++ - C 和 C++ 中的宏重新定义

我知道这段代码在C和C++中都有效:#defineFOO0#defineFOO0ISO/IEC14882:201116.3Macroreplacement[cpp.replace]2Anidentifiercurrentlydefinedasanobject-likemacromayberedefinedbyanother#definepreprocessingdirectiveprovidedthattheseconddefinitionisanobject-likemacrodefinitionandthetworeplacementlistsareidentical,otherw

c++ - shared_ptr 中对 const int 的 undefined reference

我有一个配置类//config.hppclassConfig{public:staticconstexprinta=1;staticconstexprintb=1;}并包含在main.cpp中//main.cpp#include"config.hpp"intmain(){std::coutstream=std::make_shared(Config::a);//compileerror}编译器说未定义对Config::a的引用它在使用cout时有效,但在shared_ptr构造函数中时无效。我不知道为什么会这样。 最佳答案 请注意s

c++ - 为什么必须定义未使用的虚函数?

与未使用的普通函数不同,未使用的虚函数仍必须定义,我觉得很奇怪。我对创建类对象时创建的隐式vtables和vpointers有所了解-这在某种程度上回答了问题(必须定义函数以便指针指向可以定义虚函数)但这将我的查询推得更远。如果根本不可能调用虚函数,为什么还需要为函数创建一个vtable条目?classA{virtualbooltest()const;};intmain(){Aa;//error:undefinedreferenceto'vtableforA'}即使我声明了A::test()它从未在程序中使用过,但它仍然会抛出错误。编译器是否可以不运行程序并意识到从未调用过test()

c++ - 错误 : definition of implicitly declared copy constructor

我目前正在处理的QtC++项目有问题。这是我要介绍的一个新部分,但我发现它有点令人困惑。我创建了一些由股票、债券和储蓄类继承的Assets类。这一切都很好。然后我创建了一个名为AssetList的类,它派生了QList,这个类是我发现问题的地方。这是我目前的代码。资源列表.h#ifndefASSET_LIST_H#defineASSET_LIST_H#include"Asset.h"#includeclassAssetList:publicQList{public:AssetList(){}~AssetList();booladdAsset(Asset*);Asset*findAsse

c++ - 相互递归类是否可能?

我读了howthiscanbemadetowork使用前向声明。classA{public:B*objB;voidfoo(){}}classB{public:A*objA;voidfoo(){}}只是想确认这种设计是否可行?classA{public:BobjB;voidfoo(){}}classB{public:AobjA;voidfoo(){}}PS:如果有人还可以解释为什么/为什么这在逻辑上是可能的类,而不是仅仅在语言方面,比如引用一些例子。这在类方面究竟意味着什么? 最佳答案 第二个例子是不可能的。它说分配给A的空间包含B的

C++ 错误 : definition of implicitly-declared

我正在用C++编写这个链表程序当我测试程序时,我得到了错误linkedlist.cpp:5:24:error:definitionofimplicitly-declared'constexprLinkedList::LinkedList()'LinkedList::LinkedList(){这是代码链表.h文件:#include"node.h"usingnamespacestd;classLinkedList{Node*head=nullptr;intlength=0;public:voidadd(int);boolremove(int);intfind(int);intcount(i

c++ - 声明和带有定义的声明。为什么不允许这样做?

我想知道,为什么不允许这样写:structfoo{voidbar();//declarationvoidbar(){std::cout该函数声明了两次(我认为这没问题)并定义了一次。但是,我的编译器提示:decldef.cxx:7:10:error:'voidfoo::bar()'cannotbeoverloaded为什么不允许?为什么我的编译器(g++4.7.2)将此解释为重载?PS:我知道如何写“正确的方式”,但我只是想知道,为什么上面是错误的。 最佳答案 来自§9.3Exceptformemberfunctiondefinit

c++ - 在头文件中定义非内联函数时出现链接器错误?

在头文件中定义的带有保护的非内联函数#if!defined(HEADER_RANDOM_H)#defineHEADER_RANDOM_Hvoidfoo(){//something}#endif导致链接器错误:已在someother.obj文件中定义使函数内联工作正常,但我无法理解为什么函数在第一种情况下已经出错。 最佳答案 如果头文件包含在多个源文件中并且函数未标记为“内联”,您将有多个定义。包含守卫仅防止同一源文件中的多个包含。 关于c++-在头文件中定义非内联函数时出现链接器错误?,

c++ - 如果我在 header 中声明 namespace ,是否可以避免在 .cpp 文件中使用类名?

这个问题在这里已经有了答案:C++:"Classnamespaces"?[duplicate](4个答案)关闭9年前。在C++中,我只想在.h文件中声明一个DisplayInfo类,然后在.cpp文件中,不必键入第一个DisplayInfo::DisplayInfo()和每个函数定义。遗憾的是,我已经查看了20多个主题和我的C++书籍两个多小时,但仍无法解决这个问题。我认为这是因为我正在尝试在C++中使用我10年的Java培训。第一次试验://DisplayInfo.hnamespaceDisplayInfoNamespace{ClassDisplayInfo{public:Displ