DictのコンストラクタであるDict(string f)を継承できるようにしたいと考えていました。ただし、直接継承ではないため、直接行うことはできません。それはツリーに続き、最後の親はElementクラスです。直接親ではない基底クラスからコンストラクタを継承する方法
どのようにすれば、WordクラスがWordクラス( "test.txt")を実行できるように、基本クラスのインストラクタ(Dict)からWordクラスに継承させることができるかをコンパイラに知らせることができます。メインでのインスタンス化?
#include <iostream>
#include <vector>
#include <sstream>
#include <string.h>
#include <fstream>
using namespace std;
class Dict {
public:
string line;
int wordcount;
string word;
vector <string> words;
Dict(string f) { // I want to let Word inherit this constructor
ifstream in(f.c_str());
if (in) {
while(in >> word)
{
words.push_back(word);
}
}
else
cout << "ERROR couldn't open file" << endl;
in.close();
}
};
class Element : public Dict {
public:
virtual void complete(const Dict &d) = 0;
virtual void check(const Dict &d) = 0;
virtual void show() const = 0;
};
class Word: public Element {
public:
Word(string f) : Dict(f) { }; // Not allowed (How to fix?)
void complete(const Dict &d) { };
};
};
int main()
{
//Word test("test.txt");
return 0;
}