调用'class'没有匹配函数
No matching function for call to 'class'
我正在努力学习和理解多重继承。
我有一个"蹲着"的班,是一个"被遗弃"的班的孩子
为什么我得到错误消息没有匹配的函数调用放弃::放弃()
swatcher.cpp|9|错误:调用"放弃::放弃()"|时没有匹配的函数
我在这个网站上看了很多与这个话题相关的类似帖子。他们说我必须用正确的论据声明一个被放弃的对象,但我不想使用被放弃的任何函数,我现在只想把它联系起来。
我认为这与我的构造函数有关,但我不知道问题出在哪里。
抱歉代码太多了,但我想不出更好的方法
这是我的深蹲.cpp/h
#ifndef SQUAT_H
#define SQUAT_H
#include<abandoned.h>
#include<building.h>
class Squat:public Buildings, public Abandoned
{
private:
bool isempty;
public:
Squat(bool);
virtual void display();
virtual void isoccupied(bool);
};
#endif // SQUAT_H
和.cpp
#include<iostream>
#include<squat.h>
#include<building.h>
#include<apartment.h>
#include<abandoned.h>
Squat::Squat(bool isitempty):isempty(isitempty){}
void Squat::isoccupied(bool isitempty)
{
if(isitempty=1)
{
isempty=1;
cout<<"The abandoned building is empty"<<endl;
}
else cout<<"The abandoned building is full of dirty squatters"<<endl;
}
我的理解是当我说过;
class Squat:public Buildings, public Abandoned
这已经将类"链接"在一起
下面是我放弃的.cpp/h
#ifndef ABANDONED_H
#include<vector>
#include<building.h>
#define ABANDONED_H
class Abandoned:public Buildings
{
private:
int length;
std::vector<int> status;
int sum;
public:
Abandoned(int m_size, int asum);
Abandoned(bool);
virtual void getstatus(int);
virtual void display();
virtual void demolish(int);
virtual void rebuild(int);
//virtual void demolish(int);
};
#endif // ABANDONED_H
和我的.cpp
#include<iostream>
#include<string>
#include<vector>
#include<apartment.h>
#include<building.h>
#include<abandoned.h>
#include<algorithm>
#include<numeric>
using namespace std;
Abandoned::Abandoned(int m_size, int asum): length(m_size), status(m_size, 0), sum(asum)
{}
void Abandoned::getstatus(int m_size)
{
status.push_back(length);
};
void Abandoned::display()
{
Buildings::display();
cout << " length of status is: "<<status.size()<<endl;
}
void Abandoned::demolish(int asum)
{
if(asum<3)
{
cout<<"The building is below the safety standards and should be demolished"<<endl;
}else{
cout<<"The building meets the safety standards and can be rebuilt"<<endl;}
}
void Abandoned::rebuild(int asum)
{
if(asum>3)
{
cout<<"The building is above the safety standards and should be rebuilt"<<endl;
}else{
cout<<"The building should be demolished"<<endl;}
}
类Abandoned
没有无arg构造函数。这意味着派生类的任何构造函数都必须从Abandoned
:中选择一个要调用的构造函数
Squat::Squat(bool isitempty): Abandoned(...), isempty(isitempty){}
相关文章:
- TypeError: [c++ addon class] 不是构造函数
- 为什么 class 的函数没有在 main 中被调用?
- C++,class,一个返回对象的函数
- "Class1"类"Class2"对象作为私有数据成员。如何通过"Class 2"函数引用"Class1"对象?
- 如何从类成员函数返回指针,例如 size_t * class :: function(); 并使用类析构函数 ~size
- 使用基类对象调用Dervied Class函数
- 对 Class::Class() 和函数在一个文件中的未定义引用? c++
- 将指针传递给函数在简单的情况下有效,但在"class" -izing 之后不起作用
- 如何将 std::list of 派生类而不是 std::list of parent class 传递给函数
- 为什么 fdump-class-hierarchy 为虚函数提供了两个指针 int vtable
- 在可变参数模板化函数中同时接受 int 和 class
- 稍后使用<Class>调用类构造函数创建 std::vector
- 仅当链接函数 C++ 时,才会发生"Expression must have class type error"
- Visual Class 在 DLL 中的成员函数中返回自身C++
- C :将对象引用作为参数给出错误:呼叫class :: function()的匹配函数
- 调用'class'没有匹配函数
- 向量<Class>没有成员"函数"
- 非静态成员函数的使用无效(while loop/no class/wget popen)
- 头文件中是否定义了一个很长的Class函数成员
- c at()函数class string访问紫色的函数