Следующий код не полностью на английском языке, но вы поняли.
class Student : public Osoba{
const int _brojIndeksa;
Kolekcija<Predmet, int, 5> _polozeniPredmeti;
vector<char*> _seminarski; // naslovi seminarskih radova
public:
// constructor
Student(char* ip, int brIndeksa) // brIndeksa is a global variable
:Osoba(ip), _brojIndeksa(brIndeksa), _polozeniPredmeti()
{
cout << "Test!" << endl;
}
Ошибка, которую я получаю, упоминает buffer being too small
.
Я обнаружил, что проблема заключается в этой строке:
Kolekcija<Predmet, int, 5> _polozeniPredmeti;
Если я сделаю это, например, так:
Kolekcija<int, int, 5> _polozeniPredmeti;
программа работает. Так что этот класс Predmeti
(школьные предметы) как-то виноват:
class Predmet
{
char* _naziv;
char* _profesor;
public:
Predmet(char* naziv = "<naziv>", char* prof = "<prof>")
{
int size = strlen(naziv);
_naziv = new char[size];
strcpy_s(_naziv, size, naziv);
size = strlen(prof);
_profesor = new char[size];
strcpy_s(_profesor, size, prof);
}
Я предполагаю, что конструктор по умолчанию вышеуказанного класса вызывается при создании экземпляра Student
.
Наконец, класс Kolekcija
выглядит так (и он был протестирован со встроенными типами (int, double):
template<class T1, class T2, int max>
class Kolekcija
{
T1* _clan1[max];
T2* _clan2[max];
int* _trenutnoClanova;
public:
Kolekcija()
{
cout << "pocetak" << endl;
for (int i = 0; i < max; i++)
{
_clan1[i] = new T1;
_clan2[i] = new T2;
}
_trenutnoClanova = new int(0);
}
Любая помощь будет оценена!
+ 1
, потому что я делал это десятки раз в этом месяце, и остальная часть моего кода также содержит его в таких местах. - person developer10   schedule 22.12.2015