【发布时间】:2018-09-12 07:37:48
【问题描述】:
我在创建新类对象时遇到了问题。
抽象类叫做 SimpleList,目前它自己不做任何事情。
template<class T>
class SimpleList {
public:
string ListName;
SimpleList(){
};
string getName(){
return ListName;
};
};
template<class T>
class Queue : public SimpleList<T> {
public:
string ListName;
Queue(string& name){
ListName = name;
}
string getName(){
return ListName;
}
};
这里是我试图将“pQLi”分配给一个新队列的地方,其中队列是一个派生类。
SimpleList<int> *pQLi;
if (indicator == 'i' ){
pQLi = new Queue<int>(name1);
}
但是无论我在队列之外打印出 pQLi 的名称(或从中访问任何数据,但在最简单的情况下),都只会出现 ' '。例如,如果我这样做
cout <<(*pQLi).getName() <<"\n";
不是打印出 ListName,而是出现一个空白字符
【问题讨论】:
-
您在
Queue中重复了ListName声明。Queue::ListName在您实例化Queue时设置。您通过指向SimpleList的指针访问的是永远不会设置的SimpleQueue::ListName。 -
在这种情况下如何通过指针访问队列中的数据?这可能吗?
-
@PasserBy - 最好覆盖
std::list和std::queue。 -
使用您发布的代码,没有任何结果,因为它不会编译。发布minimal reproducible example。
标签: c++ abstract-class derived-class