私は複数の継承を学び理解しようとしています。'class'への呼び出しに一致する関数がありません
私は「捨てられた」クラス
の子である「スクワット」クラスを持って、なぜ私は、エラーメッセージ放棄::放棄()
不法占拠への呼び出しに該当する機能を取得しています。 cpp | 9 | error: 'Abandoned :: Abandoned()'の呼び出しで一致する関数がありません。
このトピックに関するこのウェブサイトでは、多くの類似の投稿を見てきました。彼らは、私は正しい引数でAbandonedのオブジェクトを宣言しなければならないと言いますが、私はAbandonedの関数を使用しようとしていないので、今はそれをリンクしたいだけです。
私はそれが私のコンストラクタと何か関係があると思いますが、私は問題の内容を理解することができません。
コードの大きな壁のため申し訳ありませんが、私はここで良い方法
考えることができませんでした私のスクワットの.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;}
}
私はこのコードのほとんどは手元の質問とは無関係であるかなり確信しています。それをMVCEに還元できますか? TIA。 – Borgleader
@Borgleaderによると、コンパイラによって表示される正確なエラーメッセージは役に立ちます。 – Steve