powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / шаблоны
14 сообщений из 14, страница 1 из 1
шаблоны
    #34028917
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли вызывать протектед перегруженные методы класса предка из их перегруженных функций наследника, ставшего шаблоном?
...
Рейтинг: 0 / 0
шаблоны
    #34028939
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конкретно, такое:

Код: 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.
class KhPipeDated : public KhPipe {
    protected:
	int readData(int nPipe, KhPipeData **khPipeData);
	int readData(int nPipe, unsigned char *data, unsigned short *dataLen);
...

template <class Reader>
class KhPipeDatedCb : public KhPipeDated {
    protected:
	int readData(int nPipe) {
	    KhPipeData *khPipeData;
	    if (readData(nPipe, &khPipeData)!= 0 )
		return - 1 ;
	    if (delegate[nPipe]!=NULL)
    		(*(delegate[nPipe]))(khPipeData->data, khPipeData->dataLen);
	    freeData(khPipeData);
	    return  0 ;
	}
    public:

	int readDataDown() {//Внимание: делегат вызывается синхронно с этой функцией
	    return readData(KH_PIPE_DOWN);
	}
	int readDataUp() {//Внимание: делегат вызывается синхронно с этой функцией
	    return readData(KH_PIPE_UP);
	}
};



матершина
khstd.h: In member function `int KhPipeDatedCb<Reader>::readData(int) [with
Reader = KhPipeDatedTest]':
khstd.h:108: instantiated from `int KhPipeDatedCb<Reader>::readDataDown() [with Reader = KhPipeDatedTest]'
main.cpp:50: instantiated from here
khstd.h:78: error: no matching function for call to `
KhPipeDatedCb<KhPipeDatedTest>::readData(int&, KhPipeData**)'
khstd.h:76: error: candidates are: int KhPipeDatedCb<Reader>::readData(int)
[with Reader = KhPipeDatedTest]
...
Рейтинг: 0 / 0
шаблоны
    #34028947
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое, впечатление, что при перегрузке методов шаблонным классом, все методы предка теряются.
...
Рейтинг: 0 / 0
шаблоны
    #34029120
Такое, впечатление, что при перегрузке методов шаблонным классом, все методы предка теряются.

данные методы виртуальные?
...
Рейтинг: 0 / 0
шаблоны
    #34029159
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голенков Владимирданные методы виртуальные?

Ну, где же они виртуальные? Самые настоящие, определенные, честные методы.

Такой же метод freeData предка вызывается из наследника и все хорошо, хотя они тоже лежат в разных объектниках (т.е. сам объектник модуля и объектник приложения с инстанцированными методами).
...
Рейтинг: 0 / 0
шаблоны
    #34029164
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, кстати, переименовал метод предка, все стало нормально компилиться и работать. Но вопрос не снят, т.к.
1. Хочу разобраться в этом вопросе.
2. Хочу переименовать обратно.
...
Рейтинг: 0 / 0
шаблоны
    #34029195
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то было такое при видимость перегруженных функций при специализации.
Но навскидку не вспомню. Это должно быть оговорено в стандарте.
...
Рейтинг: 0 / 0
шаблоны
    #34029212
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голенков Владимирданные методы виртуальные?

Вроде, начинаю понимать... Их надо прописать виртуальными, чтобы создалась таблица методов? Прописал - не помогает.
...
Рейтинг: 0 / 0
шаблоны
    #34029228
Вроде, начинаю понимать... Их надо прописать виртуальными, чтобы создалась таблица методов? Прописал - не помогает.

неа, про виртуальные это я зря загнул..

что если вызывать с явной квалификацией: KhPipeDated::readData?
...
Рейтинг: 0 / 0
шаблоны
    #34029333
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голенков Владимирчто если вызывать с явной квалификацией: KhPipeDated::readData?

Да. Получилось. Спасибо.

Значит все перегруженные паблик методы предка придется обернуть оболочками из шаблона? Значит я был прав в своем предположении?

Зачем это сделано не понятно? Ведь наложение перегруженных функций при инстанцировании шаблона с не допустимым типом можно так же обнаруживать при компиляции, как и обычное наложение перегруженных функций (наложение перегруженных фукций - я имею в виду, это перегруженные функции с одинаковыми параметрами).
...
Рейтинг: 0 / 0
шаблоны
    #34029420
Значит все перегруженные паблик методы предка придется обернуть оболочками из шаблона? Значит я был прав в своем предположении?

не, шаблон тут тоже не при чем

речь идет о том, что имена в производных классах скрывают идентичные имена из базовых классов. почему так сделано Страуструп где-то объяснял, не помню..

в общем, либо явно квалифицировать, либо вводить в обращение директивой using
...
Рейтинг: 0 / 0
шаблоны
    #34029561
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голенков Владимир
в общем, либо явно квалифицировать, либо вводить в обращение директивой using

В смысле using?
...
Рейтинг: 0 / 0
шаблоны
    #34029583
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
template <class Reader>
class KhPipeDatedCb: public KhPipeDated
{
protected:

	using KhPipeDated::readData;

	int readData(int nPipe)
	{
		...
		readData(nPipe, &khPipeData);
		...
	}
...
};

...
Рейтинг: 0 / 0
шаблоны
    #34029637
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голенков Владимир
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
template <class Reader>
class KhPipeDatedCb: public KhPipeDated
{
protected:

	using KhPipeDated::readData;

	int readData(int nPipe)
	{
		...
		readData(nPipe, &khPipeData);
		...
	}
...
};



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


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