无法访问私有成员..但成员已明确声明为公共

时间:2018-12-07 16:52:13

标签: c++

我正在编写一个名为MusicPlayer的类,声明如下:

class MusicPlayer : public MIDIRenderer {
public:
    void Play(std::vector<Note> &notes);
[and other stuff but that doesn't matter]
};

here处可以找到MIDIRenderer

我需要使用MIDIRenderer的{​​{1}}(在第76行声明)

我正在拨打的确切电话是在OnNoteEvent循环中:

for

但是我在MIDIRenderer m; std::vector<Note>::iterator i = notes.begin(); for (i; i != notes.end(); i++) { m.OnNoteEvent(NULL, &(*i)); } 的{​​{1}}行上遇到了错误。但是OnNoteEvent是公开的吗? 如何使用error C2248: 'CFugue::MIDIRenderer::OnNoteEvent': cannot access private member declared in class 'CFugue::MIDIRenderer'?基本上,我正在尝试播放OnNoteEvent对象。

3 个答案:

答案 0 :(得分:2)

在C ++中,默认情况下,如果没有另外指定,则类成员是私有的。因此OnNoteEvent 是私有的。

答案 1 :(得分:1)

否,OnNoteEvent和类MIDIRenderer中的所有其他事件处理程序被声明为私有。实际上,没有可访问性声明,默认为private

我对CFugue不熟悉,因此我无法将您定向到正确的API以用于您的用例,但这不是您应该做的。

答案 2 :(得分:0)

OnNoteEvent 私有的。 class中所有没有访问说明符的成员默认为private