нет. это не влияет.
ошибка лишь в строке virtual void Add() { a.New<Obj>(); }
лучше подождать знатоков.
нет. это не влияет.
ошибка лишь в строке virtual void Add() { a.New<Obj>(); }
лучше подождать знатоков.
Тот самый случай, когда просимая и обещанная ... лет назад справка по ошибкам с примерами очень пригодилась бы.
Потому что нифига не понятно чего компилятор хочет.
Как вариант не получается через функции пробуй через класс.
а можно подробней? в статье упоминаний нет про шаблоны методов
Надо бы надавить на разработчиков, чтоб доделали наконец шаблоны.
У меня темплейты неплохо работают - я сделал обертку для любых структур, чтобы их можно было легко использовать в стандартных CArrayObj (этот класс понимает только указатели на потомки от CObject).
В приведенном примере - правильно было указано, что объект должен наследоваться от CObject, плюс в функции Add() - по-моему, неверный синтаксис.
Мне кажется, что автор не вполне понимает саму суть шаблонов.
Как я понял, нужен массив списков из любых объектов.
Его код должен выглядеть так.
Внутри .MQH:
class Obj:public CObject
{
};
template <typename T>
class CMyList
{
protected:
T* m_pObj;
public:
void New() { m_pObj=new T; }
};
template <typename T>
class CMyArray
{
CMyList<T> a;
public:
virtual void Add() { a.New(); }
};
А потом, внутри основного .MQ5 кода:
CMyArray<Obj> maArr;
maArr.Add();
Все компилируется и работает.
Мне кажется, что автор не вполне понимает саму суть шаблонов.
а мне кажется, вы не вполне поняли суть вопроса.
вы предлагаете шаблонный класс, который мне не нужен (но который конечно работает не только у вас).
но мне нужен лишь шаблонный метод в обычном классе, метод, который может создавать объект требуемого типа.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
не могу подружить template с функциями классов
class List
{
public:
template <typename T> void New() { Obj* obj=new T(); }
};
class Array
{
List a;
virtual void Add() { a.New<Obj>(); }
};
при обращении a.New<Obj> выдаёт ошибки
первая из которых - pointer to this function type is not supported yet
а если оставить a.New, то выдаётtemplate mismatch
cannot to apply function template
----
как победить?
есть у кого рабочий пример?