草庐IT

call_me_virtual

全部标签

c++ - 错误 : no matching function for call to . .. 在返回语句

我在openSUSELeap15上的Qt5.9.4上使用GCC7。我有以下类(class):classManSuppProps:publicQObject{Q_OBJECTpublic:explicitManSuppProps(QStringparentName);explicitManSuppProps(){}explicitManSuppProps(constManSuppProps&manSuppProps);explicitManSuppProps(ManSuppProps&manSuppProps);~ManSuppProps();private:QVector3Dm_sup

c++ - 虚假 "missing sentinel in function call"

如果编译为CandC++源代码,这个简单的代码片段会使用g++4.7.0生成“函数调用中缺少标记”警告。我相信这是编译器的错误,因为最终的NULL值(value)就在那里。#includeintmain(){execlp("mkdir","mkdir","-p","test",NULL);return0;}我说得对吗? 最佳答案 不,你错了。在C++中NULL类似于0或0L并且在C中可能是相同的。如果该常量的类型小于指针那么它是不安全的将其传递给可变参数函数,因为高位将被垃圾填满。在Linux上,execlp(1)手册页说:Thel

c++ - Qt 信号槽 : Signal is sent but Slot is not called

我在C++的VisualStudio2013中使用Qt。我正在尝试将信号连接到插槽。问题是信号已发送,但槽函数从未被调用,我不知道发生了什么。这段代码之前可以工作,但是在我将代码从32位的VisualStudio2012迁移到64位的VisualStudio2013并进行一些更改后,它不再工作了。它打印调试语句:发送前、发送图像和连接,但不打印接收到的图像。有人可以帮忙吗?Streamer.hsignals://SignaltooutputframetobedisplayedvoidprocessedImageStream(constvector&imgs,constQImage&im

c++ - 为什么 virtual void test()=00 有效但 virtual void test()=+0 和 virtual void test()=-0 无效?

我搜索了一些关于虚函数声明的帖子,相信=0在virtualvoidtest()=0;是固定句法所以virtualvoidtest()=NULL;virtualvoidtest()=false;virtualvoidtest()=1-1;virtualvoidtest()=0.0;和其他声明应该是无效的。但是我发现了virtualvoidtest()=00;virtualvoidtest()=000;virtualvoidtest()=0000;还能编译,为什么?还有,我觉得整数+0和-0其实和0一样(不知道对不对),就像00其实就是0一样,为什么virtualvoidtest()=+0

c++ - 海湾合作委员会 "no matching function for call.."错误

我正在开发一个跨平台代码库,其中初始工作是使用MSVC2010编译器完成的。后来我在Linux上使用GCC(4.7)编译它。在许多情况下,我收到:“没有匹配的调用函数..”GCC中的错误。我注意到它主要在方法参数是非常量引用时提示。例如:voidMyClass::DoSomeWork(ObjectSP&sprt,conststd::stringsomeName,conststd::stringanotherName,conststd::stringpath,intindex){sprt->GetProp()->Update(path,false);}一旦我将方法更改为:voidMyCl

c++ - 多层继承中的virtual关键字

我有一个继承链,其中A类公开继承自B类,B类又公开继承自C类。C类的析构函数被标记为“虚拟”。是否有人反对将B类和A类的析构函数标记为虚拟的?或者在这些情况下是否需要支付性能/内存损失? 最佳答案 如果基类析构函数被标记为虚拟的,那么派生类析构函数也是隐式虚拟的,您不需要明确地将其指定为虚拟的。没有性能或内存损失所以在你的例子中,如果C有一个虚拟析构函数B并且A继承了析构函数的“虚拟性” 关于c++-多层继承中的virtual关键字,我们在StackOverflow上找到一个类似的问题:

C++ 模板 : no matching function for call

考虑以下代码templateTexponentiel(Tval,unsignedn){Tresult=one;unsignedi;for(i=0;i(2.0f,3);cout编译器告诉我这个没有匹配函数来调用'exponentiel(float,int)'为什么?奇怪的是exponentiel与int一起使用。 最佳答案 问题出在模板参数列表中的Tone和1.0上。您不能拥有浮点类型的非类型模板参数,也不能将浮点值作为模板参数传递。这是不允许的(据我所知,没有充分的理由不允许这样做)。g++在这里的错误信息是相当无用的。Visual

c++ - C++ 中 `virtual` 关键字对对象而不是指针的行为

我试图理解虚函数。考虑以下代码,#include#include#includeclassAnimal{public:virtualvoideat(){std::cout使用virtual关键字我得到了输出Ieatlikeagenericanimal.Ieatlikeawolf!这是应该的。但是如果我删除virtual关键字,我仍然会得到相同的输出!从我的对虚函数的基本理解,没有virtual我应该得到输出Ieatlikeagenericanimal.Ieatlikeagenericanimal.这里有什么我遗漏的基本知识吗?我在Linux上使用g++编译器

c++ - 函数声明中缺少 'virtual' 限定符

在浏览一些旧代码时,我遇到了类似于以下内容的内容:classBase{public:virtualintFunc();...};classDerived:publicBase{public:intFunc();//Missing'virtual'qualifier...};代码编译良好(MSVS2008),没有警告(级别4)并且按预期工作-Func是虚拟的,即使派生类中缺少虚拟限定符。现在,除了引起一些困惑之外,这段代码是否有任何危险,或者我是否应该全部更改它,添加virtual限定符? 最佳答案 virtual将被传递到派生类中的

c++ - C++ 代码错误 "expected constructor, destructor, or type conversion before ‘(’ token ”和 "no matching function for call to ..."

真正尝试解决错误,仔细检查所有内容。请帮忙。c++新手,请多关照。头文件(.h)#ifndefGUARD_Optimized_quick_sort_h#defineGUARD_Optimized_quick_sort_h#include#include#includeusingnamespacestd;templateclassoptimized_quick_sort{public:optimized_quick_sort(vectorarray){this->array=array;}optimized_quick_sort(listarray){vectortemp(array.b