假設您有基類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);
};
你願意修改這些類嗎?或者你想知道如何使用已存在的內容進行投射? – Beta
你不能實例化'Unix_tree',因爲它包含一個純虛函數。所以你爲什麼需要投它? – corn3lius
也許我有點sl,,對不起。假設你有Unix_tree_type_1,目標是將其轉換爲Unix_tree_type_2。 –