我正在使用IMidiQueue将IMidiMsg
对象排队/添加到我的IMidiQueue mMIDICreated;
中
有时,我想检索添加到其中的项目数。我已经试过了:
char buffer[50];
sprintf(buffer, "size %d\n", sizeof(mMIDICreated) / sizeof(IMidiMsg));
OutputDebugString(buffer);
但添加8个项目后:
for (int i = 0; i < 4; i++) {
IMidiMsg* one = new IMidiMsg;
// ...
mMIDICreated.Add(one);
IMidiMsg* two = new IMidiMsg;
// ...
mMIDICreated.Add(two);
}
它返回2,而不是8。我在哪里错了?
最佳答案
sizeof
将返回对象或类型本身的大小,它是一个常量,在编译时进行评估,与只能在运行时知道的项数无关。
您应该使用IMidiQueue::ToDo
: