我正在使用IMidiQueueIMidiMsg对象排队/添加到我的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:

08-19 19:38