Не могу переопределить CMemFile :: GrowFile - PullRequest
0 голосов
/ 24 октября 2009

У меня есть класс, производный от CMemFile, который называется TempMemFile. Мне нужно, но не могу переопределить метод Growfile в TempMemFile.

Когда я вручную пишу метод GrowFile в своем производном классе (TempMemFile), он никогда не вызывается, и в представлении класса, когда я нажимаю на свой TempMemFile> Свойства> Переопределяет Growfile, другие методы здесь не перечислены. На самом деле только 3 метода перечислены как переопределенные Assert, Dump & Serialize. MSDN определенно заявляет, что этот метод может быть переопределен. Я что-то пропустил?

Осуществление / Декларация

// TempMemFile.h

class CTempMemFile : public CMemFile

    {

    public:
        CTempMemFile(void);
        ~CTempMemFile(void);
        DWORD Begin(void);

    private:      
      void GrowFile(SIZE_T dwNewLen);  // override

    };

// TempMemFile.cpp

CTempMemFile::CTempMemFile(void) : CMemFile

    {   

    }

CTempMemFile::~TempMemFile(void)
    {

    }


void GrowFile(SIZE_T dwNewLen)

{

// This function is never called but CMemFile::Growfile always is verified on the callstack

}

Ответы [ 2 ]

1 голос
/ 25 октября 2009

Также убедитесь, что видимость вашего метода переопределения соответствует объявлению базового класса:

private:      
  void GrowFile(SIZE_T dwNewLen);  // override

неверно

Должно быть public или protected (независимо от того, CMemFile::GrowFile объявляет его как).

1 голос
/ 25 октября 2009

Ваша реализация GrowFile предназначена для глобальной функции с именем GrowFile. Вам нужно CTempMemFile:: перед реализацией.

void CTempMemFile::GrowFile(SITE_T dwNewLen)
{
}
...