Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вызов извне виртульного метода конкретного класса из иерархии наследования объекта / 6 сообщений из 6, страница 1 из 1
28.10.2016, 09:24
    #39335913
NSFUimus1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
может туплю, - никогда не сталкивался - но тут встрял с сабжем ... ну т.е. требуется типа такого
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
		class CFrameImplBase : public CCmdTarget
		{
		protected:
			BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
			{
				...
				...
				...
				return CCmdTarget::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
			};
		};

		class CContаiner : public ...
		{
		protected:
			CFrameImplBase* m_pImpl;
			BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
			{
				...
				...
				...
				//И вот здесь есть необходимость вызвать именно строго метод CCmdTarget::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)
				//чтобы не выполнялся собственно класса CFrameImplBase, но не выходит каменный цветок
				class CFrameImplBaseEx : public CFrameImplBase
				{
						friend class CContаiner ;
				protected:
						BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) final
						{
								return CCmdTarget::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
						};
				};
				BOOL bResult = ((CFrameImplBaseEx*)m_pImpl)->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
				// - упорно выполняется сначала метод OnCmdMsg CFrameImplBase
				//можно ли как-то побороть?
				...
				...
				...
			};
		};



ЗЫ не С++ 11
...
Рейтинг: 0 / 0
28.10.2016, 09:27
    #39335918
NSFUimus1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
мля ... наверно как минимум DECLARE_DYNCREATE + IMPLEMENT_DYNCREATE надо указать сцуко ... щас попробую
...
Рейтинг: 0 / 0
28.10.2016, 09:45
    #39335934
ТЫАгшьгы1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
неа ... вынес локальное определение за процедуру, вставил макросы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class CFrameImplBaseEx : public CFrameImplBase
{
	DECLARE_DYNAMIC(CFrameImplBaseEx)
	friend class CContаiner ;
protected:
	BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) final
	{
		return CCmdTarget::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
	};
};
IMPLEMENT_DYNAMIC(CFrameImplBaseEx,CFrameImplBase);


всЁ равно выполняет тварь
...
Рейтинг: 0 / 0
28.10.2016, 10:33
    #39335969
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
Пробовал так?
Код: plaintext
1.
m_pImpl->CCmdTarget::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
...
Рейтинг: 0 / 0
28.10.2016, 10:44
    #39335983
NSFuimus1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
2 NekZ
мляяяя! ... Спасибо!
...
Рейтинг: 0 / 0
28.10.2016, 10:54
    #39336002
NSFuimus1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
и главное веть нашол такое в своЁм проекте - уже использовал раньше:
Код: plaintext
1.
2.
3.
4.
5.
6.
	m_pWndListEx = new CListCtrlEx;
	if (!m_pWndListEx->CWnd::CreateEx (WS_EX_CLIENTEDGE, _T("SysListView32"), _T(""),
						WS_VISIBLE | WS_CHILD | LVS_REPORT | LVS_SINGLESEL | 
							/*LVS_NOCOLUMNHEADER | */LVS_SHOWSELALWAYS,
						rectEmpty, this, IDLISTCTRL))
			return FALSE;


еще раз спасибо!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вызов извне виртульного метода конкретного класса из иерархии наследования объекта / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]