История изменений
Исправление www_linux_org_ru, (текущая версия) :
Это не тот случай. IIRC, ты не можешь указать в списке наследования один класс несколько раз.
можно, если класс параметризован
в контексте топикстартера это может-быть что-то вроде Красивая реализация списков (комментарий)
class ByLoadOrder {};
class ByMemoryOrder {};
class ByInitializationOrder {};
struct SomeStruct;
struct SomeStruct:
public IntrusiveList<SomeStruct, ByLoadOrder>,
public IntrusiveList<SomeStruct, ByMemoryOrder>,
public IntrusiveList<SomeStruct, ByInitializationOrder>
{
PVOID ModuleBase; // module base address
PVOID ModuleEntry; // module entry point
ULONG ModuleSize; // module size (?)
UNICODE_STRING ModulePath; // module full path
UNICODE_STRING ModuleName; // module name
};
но возникает интересный вопрос — можно ли тут написать
struct SomeStruct:
public IntrusiveList<SomeStruct, SomeStruct::*ModuleName>,
public IntrusiveList<SomeStruct, SomeStruct::*ModuleSize>
{
...
подозреваю, что нельзя, и это обидно :-)
Исходная версия www_linux_org_ru, :
Это не тот случай. IIRC, ты не можешь указать в списке наследования один класс несколько раз.
можно, если класс параметризован
в контексте топикстартера это может-быть что-то вроде Красивая реализация списков (комментарий)
class ByLoadOrder {};
class ByMemoryOrder {};
class ByInitializationOrder {};
struct SomeStruct;
struct SomeStruct:
public IntrusiveList<SomeStruct, ByLoadOrder>,
public IntrusiveList<SomeStruct, ByMemoryOrder>,
public IntrusiveList<SomeStruct, ByInitializationOrder>,
{
PVOID ModuleBase; // module base address
PVOID ModuleEntry; // module entry point
ULONG ModuleSize; // module size (?)
UNICODE_STRING ModulePath; // module full path
UNICODE_STRING ModuleName; // module name
};
но возникает интересный вопрос — можно ли тут написать
struct SomeStruct:
public IntrusiveList<SomeStruct, SomeStruct::*ModuleName>
public IntrusiveList<SomeStruct, SomeStruct::*ModuleSize>
{
...
подозреваю, что нельзя, и это обидно :-)