С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Использование указателя на объект шаблонного класса в шаблонном классе. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Точка выхода в вижуал С++ 2010 http://www.cyberforum.ru/cpp-beginners/thread341305.html
В сях я нуб полнейший%-), но быстро усовершенствуюсь, и решил освоить этот язык. Вроде для начала все раздуплил. Создал ЦЛР проэкт и давай накидывать туды всякой всячины (ну типа интерфейс замутил...
C++ Unsigned integer 24 bit Как можно объявить беззнаковый integer размером в 24 бита? Если я объявлю его как битовое поле в структуре, например так: struct rgb { unsigned r:24; unsigned g:24; unsigned... http://www.cyberforum.ru/cpp-beginners/thread341301.html
Массив функций C++
Есть функция: bool sota(a& d1, a& d2) {return 1;} Я вызываю её вот так: sort(mas->begin(), mas->end(), sota); Мне нужно сделать массив из 10 функций sota, с разными значениями return. К...
C++ Поиск символа на консоли
Всем привет. Допустим я поставил где-то на консоли символ при помощи функции SetConsoleCursorPosition(), потом в какой-то момент мне нужно найти указаный символ и затереть его, есть ли такая функция...
C++ Вопрос про catch и delete http://www.cyberforum.ru/cpp-beginners/thread341254.html
по какой причине данная операция совершается успешно? ведь указатель равен 0.
C++ Захват текста под курсором мыши Здравствуйте. Возникла такая проблема: надо в текстовом редакторе (например TMemo) получить слово на которое указывает курсор мыши, затем после некоторых преобразований (перевод слова) тут же вывести... подробнее

Показать сообщение отдельно
grizlik78
Эксперт С++
1972 / 1465 / 122
Регистрация: 29.05.2011
Сообщений: 3,033
13.08.2011, 23:45
Цитата Сообщение от gretham Посмотреть сообщение
А при этом если захочу засунуть объект класса A с параметром char*, то ничего не получится
А зачем в объект класса B<int, int> пытаться засунуть A<char*> ? Может для этого всё-таки нужно B<int, char*> ? А если нужно держать там указатели на A с произвольным параметром, то я знаю единственный способ — унаследовать A<> от нешаблонного виртуального класса и использовать полиморфизм. Только виртуальные функции ведь тоже не смогут быть шаблонными.
Ну и все достоинства/недостатки виртуальности...
Пример:
C++
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
#include <iostream>
#include <typeinfo>
 
class A_Base
{
public:
    virtual ~A_Base() {}
    virtual void SomeFunc() { std::cout << "A_Base::SomeFunc" << std::endl; }
};
 
template<typename T>
class A : public A_Base
{
public:
    void SomeFunc() { std::cout << "A<" << typeid(T).name() << ">::SomeFunc" << std::endl; }
};
 
template<typename T>
class B
{
private:
    A_Base* a;
public:
    B(A_Base* x) : a(x) {};
    void Test() { a->SomeFunc(); }
 
};
 
int main()
{
    A<int> a1;
    A<long> a2;
    B<char> b1(&a1), b2(&a2);
    b1.Test();
    b2.Test();
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.