新手问,C++类方法中不能创建别的结构的变量吗?

初学c++,想综合练习一下结构和类。
我定义了
1:一个Formula类,主要用于保存某种公式;
2:一个Fml_LNode结构,包含Formula对象和Fml_LNode指针,用于将Formula对象存储为单链表形式;
3:一个Fml_LList类,包含上述链表的结点数、头指针和尾指针,以及成员函数add()。如代码所示。

class Formula {
private:
    gem src;
    gem pro;
public:
    Formula(gem sc, gem pr);
    ~Formula() {};
    void show();
};

struct Fml_LNode {
    Formula fml;
    Fml_LNode *next;
};

class Fml_LList {
private:
    int num_of_formulas;
    Fml_LNode *L;
    Fml_LNode *rear;
public:
    void add(Formula & fml);
};

add()方法的功能是接受一个Formula公式对象的引用,尾插法加入到链表中,代码为:

void Fml_LList::add(Formula & newfml) {
    num_of_formulas++;
    int a;
    rear = new Fml_LNode;
    rear->fml = newfml;
    rear->next = NULL;
    rear = rear->next;
}

遇到问题:
在新建链表结点那一行,编译器提示不能”尝试引用已删除的函数“。
图片说明
图片说明
我明明是用结构体变量,这和构造函数啥的又有什么关系呢?如果不能则么做,希望能提供一个思路谢谢大家

c++

1个回答

你的fml Lnode里面有一个Formula对象,而你声明的Formula对象没有默认的构造函数。现在你只有一种Formula(gem sc, gem pr)的构造形式,没有Formula()的构造形式。

chaoren00001
chaoren00001 原来无参数的默认构造函数是必须的啊 谢谢你
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐