Добрый день!
Допустим, есть у меня класс:
class A
{
A();
~A();
char* getChar();
}
Хочу я объявить шаблон класса
template<class T>
class B
{
public:
B();
~B();
char* call_getChar()
{
// ... сюда надо написать что-то, чтобы вызвался метод getChar() шаблонного класса T
}
}
Теперь я создаю экземпляр класса:
B<A> С;
char *p = C.call_getChar(); // должен вызваться метод getChar() из класса А.
Вопрос, что написать в методе call_getChar() ?
Re: Вопрос по шаблонам C++
От:
_DAle_
Дата: 08.11.09 21:24
Оценка:
Здравствуйте, RadioShark, Вы писали:
RS>Добрый день!
RS>Допустим, есть у меня класс:
RS>RS>class A
RS>{
RS> A();
RS> ~A();
RS> char* getChar();
RS>}
RS>
RS>Хочу я объявить шаблон класса
RS>RS>template<class T>
RS>class B
RS>{
RS>public:
RS> B();
RS> ~B();
RS> char* call_getChar()
RS> {
RS> // ... сюда надо написать что-то, чтобы вызвался метод getChar() шаблонного класса T
RS> }
RS>}
RS>
Чтобы вызвать член класса тебе нужен объект типа T для начала, либо член должен быть статическим.
Re: Вопрос по шаблонам C++
Здравствуйте, RadioShark, Вы писали:
есть три способа:
1. В должен быть наследником А
template <typename T>
class В : public T
{
public :
char * call_getChar()
{ return getChar(); }
};
2. В должен содержать переменную-член типа А
template <typename T>
class В
{
private :
T m_tA;
public :
char * call_getChar()
{ return m_tA.getChar(); }
};
3. функция-член класс А должна быть статической
class A
{
public :
static char * getChar()
{ return m_tA.getChar(); }
};
template <typename T>
class В
{
public :
char * call_getChar()
{ return T::getChar(); }
};
Мой компьютер прогоняет бесконечный цикл за 9 секунд, но, мне кажется, он мог бы сделать это быстрее...
Re[2]: Вопрос по шаблонам C++
От:
Bell
Дата: 10.11.09 06:06
Оценка:
Здравствуйте, Faust, Вы писали:
F>Здравствуйте, RadioShark, Вы писали:
F>есть три способа:
...
4.
template <typename T>
class В
{
public :
char * call_getChar()
{
T tmpA;
return tmpA.getChar();
}
};
Любите книгу — источник знаний (с) М.Горький
Re[3]: Вопрос по шаблонам C++
Под Access Violation человека подводите. Не хорошо
Re[3]: Вопрос по шаблонам C++
От:
Faust
Дата: 11.11.09 05:49
Оценка:
Здравствуйте, Bell, Вы писали:
B>4.
B>B>template <typename T>
B>class В
B>{
B>public :
B> char * call_getChar()
B> {
B> T tmpA;
B> return tmpA.getChar();
B> }
B>};
B>
B>
если мы говорим о таком подходе, то целесообразнее сделать так:
class A
{
public :
char * getChar() { ... }
};
A& objectA(void ) { static A objA; return objA; }
template <typename T>
class В
{
public :
char * call_getChar()
{ return objectA().getChar(); }
};
Мой компьютер прогоняет бесконечный цикл за 9 секунд, но, мне кажется, он мог бы сделать это быстрее...
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить