我使用Traymenu类的参数this
调用类Note的构造函数。
我想实现类的每个对象注意知道类Traymenu的现有对象(只有一次,但是类的许多对象注意)。
void Traymenu::newNote(){
Note(&this);
Note::Note(Traymenu * mn) :
QWidget()
{
ui.setupUi(this);
this->show();
myMn = new Note(*mn);
}
myMn是类注释的私有指针成员:Traymenu * myMn;
错误是
no matching function for call to 'Note::Note(Traymenu&)'
myMn = new Note(*mn);
^
答案 0 :(得分:1)
问题在于myMn = new Note(*mn);
您正在使用*mn
,这取消引用了mn。该类型转为Traymenu&
而不是Traymenu*
。使用myMn = new Note(mn);
。正如人们所指出的那样,这将是一次无限的递归,所以祝你好运。
答案 1 :(得分:0)
我怀疑您需要将示例中的最后一行更改为:
myMn = mn;
您发布的第一个成员函数毫无意义。你想用它做什么?
编辑: 考虑到您的评论,您可能需要以下内容:
class Note;
class Traymenu {
std::vector<Note *> notes;
public:
void newNote() {
notes.push_back(new Note(this));
}
};
class Note {
Traymenu * tm;
public:
Note(Traymenu * t) : tm(t) {}
};
请注意,我没有尝试编译我的示例。