mardi 20 février 2018

How to instantiate template of a class c++

I have a class Extractor:

template<typename OutputSchema, typename ExtractorType, typename InputStream = BinaryInputStream>
class Extractor : public Operator<Extractor<OutputSchema, ExtractorType, InputStream>, OutputSchema, -1>
{
}

And I want to create an object of this class in another class. I create an object of this class in the following way:

class dummy{
Extractor<OutputSchema, ExtractPolicy, TextInputStream<TextInputStreamTraitsConst<'\t', '\0', '\0', false, false, Default, false, false, false, 0, CharFormat_uint16, false, false>, CInput> > m_extractors;
}

Here, class TextInputStream is of the type:

template<typename TextInputStreamTraits, typename InputStreamType>
class TextInputStream : public TextInputStreamTraits, public TextConversions
{
}

And TextInputStreamTraitsConst is of the type:

template<UINT64       _delimiter,
         UINT64       _rowDelimiter,
         UINT64       _escapeChar,
         bool         _escape,
         bool         _textQualifier,
         TextEncoding _encoding,
         bool         _validateEncoding,
         bool         _silent,
         bool         _haveNullEscape,
         int          _skipFirstRowsCount,
         CharFormat   _charFormat,
         bool         _laxValidation = false,
         bool         _nullStringExtractEnable = true>
struct TextInputStreamTraitsConst
{
}

However on instantiating Extractor class I get the following error:

error C2661: 'TextInputStream,CInput>::TextInputStream': no overloaded function takes 4 arguments?

Aucun commentaire:

Enregistrer un commentaire