我正在编写一个名为MusicPlayer
的类,声明如下:
class MusicPlayer : public MIDIRenderer {
public:
void Play(std::vector<Note> ¬es);
[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
对象。
答案 0 :(得分:2)
在C ++中,默认情况下,如果没有另外指定,则类成员是私有的。因此OnNoteEvent 是私有的。
答案 1 :(得分:1)
否,OnNoteEvent
和类MIDIRenderer
中的所有其他事件处理程序被声明为私有。实际上,没有可访问性声明,默认为private
。
我对CFugue
不熟悉,因此我无法将您定向到正确的API以用于您的用例,但这不是您应该做的。
答案 2 :(得分:0)
OnNoteEvent
是私有的。 class
中所有没有访问说明符的成员默认为private
。