Имам проблеми с инстанцирането на обект от тип шаблонен клас в C++.
Ето кода:
Array.h:
//Developed by Trofimov Yaroslav on 30.03.2018
#ifndef _ARRAY_H_TROFIMOV_
#define _ARRAY_H_TROFIMOV_
template<size_t n, typename T>
class Array
{
static unsigned __freeId, __quantity;
unsigned _id;
T* _array;
public:
template<size_t n, typename T>
Array(void);
~Array(void);
T& operator[](const size_t);
};
#include "Array.cpp"
#endif
Array.cpp:
//Developed by Trofimov Yaroslav on 30.03.2018
#include "Array.h"
template<size_t n, typename T>
Array::Array(void)
: _id(++__freeId), _array(new T[]) {
}
template<size_t n, typename T>
Array::~Array(void) {
}
template<size_t n, typename T>
T& Array::operator[](const size_t i) {
}
Main.cpp:
//Developed by Trofimov Yaroslav on 30.03.2018
#include <iostream>
#include "Array.h"
int main(void) {
Array<7, int> a;
return 0;
}
Сега, когато задържа курсора на мишката върху a
в Main.cpp
, виждам следното:
Грешка: не съществува конструктор по подразбиране за клас "Array‹7U, int>"
Но както можете да видите, конструкторът на шаблони по подразбиране съществува. И така, какво пропускам тук?
template<size_t n, typename T> Array(void);
--›Array();
stackoverflow.com/questions/495021/ - person llllllllll   schedule 30.03.2018template
от конструктора, той не е там. Освен това във вашия cpp файл трябва да замените всичкиArray::
сArray<n, T>::
- person Remy Lebeau   schedule 30.03.2018Array::
и премахнахtemplate
, получих грешката като грешен синтаксис. Затова не виждам полза от вашите съвети. - person ggghahaha   schedule 30.03.2018