継承に問題があります。私は、メインC++エラー:抽象クラス型のオブジェクトは許可されていません
int main(){
Repository repo("dogs.txt");
FileAdoptionList* a = new CSVDoglist{};/here is the error
Controller ctrl(repo, dogValidator{}, a);
UI ui(ctrl);
ui.startUI();
delete a;
}
で
...スクリプトで何が間違っているCSVDoglist.h
class CSVDoglist : public FileAdoptionList
{
public:
void writeToFile();
void displayAdoptionlist() const;
};
FileAdoptionList.h
class FileAdoptionList : public AdoptionList
{
protected:
std::string filename;
public:
FileAdoptionList();
virtual ~FileAdoptionList() {}
void setFilename(const std::string& filename);
virtual void writeToFile() = 0;
virtual void displayAdoptionList() const = 0;
};
を知りませんAdoptionList.h
class AdoptionList
{
protected:
std::vector<Dog> storage;
public:
AdoptionList();
// Adds a dog to the playlist.
void add(const Dog& dog);
// Checks if the adoptionlist is empty.
bool isEmpty();
virtual ~AdoptionList() {}
};
エラー:
object of abstract class type "CSVDoglist" is not allowed:
'CSVDoglist': cannot instantiate abstract class Adoptig Dogs
私はこの問題の詳細についてのトピックを読んでいるが、私は解決策が見つかりませんでした。
誰かが私を助けることができますか?ありがとう
'CSVDoglist {}'の略語は何ですか?多分あなたは 'CSVDoglist()'を意味するのでしょうか? – ForceBru
これはC++以降の有効な初期化です –