指针作为c ++中的形式参数

时间:2014-02-13 14:21:10

标签: c++

我使用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);
                    ^

2 个答案:

答案 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) {}
};

请注意,我没有尝试编译我的示例。