Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Есть ли memer function templates в BCB 6 ?


Автор: blza 28.7.2010, 15:07
Пишу загрузчик данных, нужно создать класс-набор данных.
На http://en.wikipedia.org/wiki/Variadic_templates расчитывать не приходится, поэтому решил обойтись http://msdn.microsoft.com/en-us/library/swta9c6e.aspx. Но сразу наткрулся на ошибку компиляции.
Код

#ifndef _T_DATASET_H_
#define _T_DATASET_H_

#include <vector>

class T_DataSet{
private:
    //std::vector<void*> _columns;
public:
    template<class T> void InsertValue( const int aColumnNum, T& aValue ){
        //static_cast< std::vector<T>* >( _columns[ aColumnNum ] )->push_back( aValue );
    }
    T_DataSet(){}
    virtual ~T_DataSet(){}
}


#endif /* _T_DATASET_H_ */

Такой header не компилируется, выдавая:

[C++ Error] stdio.h(359): E2040 Declaration terminated incorrectly

В зависимости от того, после или перед каким хедером подключать данный файл, ошибки могут быть и в других *.h, не всегда в stdio.h.
Возможно ли обойти это в BCB 6?
Если нет, то какая версия CB обеспечивает нормальную поддержку member templates?
Кстати, с трудом нашел в google.groups обсуждение точно такой же ошибки в BCB 5. Там сделали вывод, что в BCB 5 это не поддерживается. 

Автор: mrbrooks 28.7.2010, 15:13
blza, ох. не стал бы я этим заниматься в BC++ 6.0. Если есть возможность - обновите IDE хотя бы до 2007.

Автор: blza 28.7.2010, 15:36
Здорово. Выяснил.
Все потому, что не поставил в конце объявления класса ТОЧКУ С ЗАПЯТОЙ.
Все есть. Все работает.
И как только предотвратить ТАКИЕ ошибки в будущем?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)