powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
6 сообщений из 6, страница 1 из 1
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
    #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
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
    #39335918
NSFUimus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мля ... наверно как минимум DECLARE_DYNCREATE + IMPLEMENT_DYNCREATE надо указать сцуко ... щас попробую
...
Рейтинг: 0 / 0
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
    #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
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
    #39335969
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал так?
Код: plaintext
1.
m_pImpl->CCmdTarget::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
...
Рейтинг: 0 / 0
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
    #39335983
NSFuimus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 NekZ
мляяяя! ... Спасибо!
...
Рейтинг: 0 / 0
Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
    #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
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вызов извне виртульного метода конкретного класса из иерархии наследования объекта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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