'class' 的调用没有匹配的函数
No matching function for call to 'class'
我正在努力学习和理解多重继承。
我有一个 'squat' class 是 'abandoned' class
的 child
为什么我会收到错误消息 no matching function for call to Abandoned::Abandoned()
squatter.cpp|9|错误:没有匹配函数来调用 'Abandoned::Abandoned()'|
我在这个网站上看了很多与这个主题相关的帖子。他们说我必须用正确的参数声明一个 object 的 Abandoned,但我不想使用 Abandoned 的任何功能,我现在只想 link 它蹲下。
我认为这与我的构造函数有关,但我无法确定问题所在。
对不起,代码太多了,但我想不出更好的方法
这是我的深蹲。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
这有 'linked' 个 class 在一起
下面是我废弃的.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;}
}
class Abandoned
没有无参数构造函数。这意味着派生 class 的任何构造函数都必须 select 一个构造函数才能从 Abandoned
:
调用
Squat::Squat(bool isitempty): Abandoned(...), isempty(isitempty){}
我正在努力学习和理解多重继承。
我有一个 'squat' class 是 'abandoned' class
的 child为什么我会收到错误消息 no matching function for call to Abandoned::Abandoned()
squatter.cpp|9|错误:没有匹配函数来调用 'Abandoned::Abandoned()'|
我在这个网站上看了很多与这个主题相关的帖子。他们说我必须用正确的参数声明一个 object 的 Abandoned,但我不想使用 Abandoned 的任何功能,我现在只想 link 它蹲下。
我认为这与我的构造函数有关,但我无法确定问题所在。
对不起,代码太多了,但我想不出更好的方法
这是我的深蹲。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
这有 'linked' 个 class 在一起
下面是我废弃的.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;}
}
class Abandoned
没有无参数构造函数。这意味着派生 class 的任何构造函数都必须 select 一个构造函数才能从 Abandoned
:
Squat::Squat(bool isitempty): Abandoned(...), isempty(isitempty){}