C++ 创建了构造函数,IDM却显示没有合适的构造函数

class LinkNode{
public:
    LinkNode(int x){m_iData=x;m_pLink=NULL;};
    int m_iData;
    LinkNode *m_pLink;
};
class LinkedQueue:public LinkNode{
private:
    LinkNode* m_pHead;
    LinkNode* m_pRear;  
public:
    LinkedQueue(int x);
    ~LinkedQueue(){MakeEmpty();};
    bool IsEmpty();
    bool EnQueue(int x);
    bool DeQueue(int &x);
    int GetSize();
    void MakeEmpty();
};
LinkedQueue::LinkedQueue(int x){
    m_pHead=m_pRear=new LinkNode(x);

我要创建一个链表队列,首先要创建一个结点,我明明写了结点的构造函数,却用不了错误显示如下:
error C2512:"LinkNode":没有合适的构造函数可用
IntelliSense:类"LinkNode"不存在默认构造函数

你写一个默认无参数的构造函数试试
LinkNode(){m_iData=0;m_pLink=NULL;};

因为你在定义class LinkedQueue时,公有继承LinkNode,也就是说,在m_pHead=m_pRear=new LinkNode(x);它会先去调用LinkNode的无参构造函数
而你在LinkNode中显式定义了一个有参构造函数,那么LinkNode的默认无参构造就不会再有了,所以会报错。

其实做链表队列,可以不用继承的