基本クラスUnix_tree
、派生クラスなどがUnix_tree_type1
あるとUnix_tree_type2
します。にキャストできないのはなぜUnix_tree
ですかUnix_tree_type
? そのようなキャストを実行する方法はありますか? 派生クラスには抽象メソッドの実現が含まれており、その目的は基本クラスに含まれるデータをさまざまな方法で出力することです。ありがとう。
class Unix_tree
{
public:
Unix_tree ()
{
tree_it.tree = &tree;
}
Unix_tree(const Unix_tree& utree) : num_of_files(utree.num_of_files), tree(utree.tree), tree_it(utree.tree_it)
{
tree_it.tree = &tree;
};
int num_of_files;
map<int, pair<int, string> > names;
vector<pair<int, int> > edges;
Tree< pair<int, string> > tree;
TreeIterator< pair<int, string> > tree_it;
string input_format;
string output_format;
static Unix_tree* load_tree(istream& input_info);
void load_names(istream& input_info);
void load_tree_nodes(vector<int>& levels);
Unix_tree* convert(string format);
virtual void load(istream& input_info) = 0;
virtual void print_function(const Tree<pair<int, string> >* node, const vector<bool>& visited ) = 0;
void print_tree();
};
class Unix_tree_type1 : public Unix_tree
{
public:
void load(istream& input_info);
void print_function(const Tree<pair<int, string> >* node, const vector<bool>& visited);
};