c++ templates run-time error

novappt

Registered
Код:
#include <iostream>

using namespace std;


template <class T>
class ArrayList
{
    T *array;
public:
    ArrayList();
};
template <class T>
ArrayList<T>::ArrayList()
{
    array = new T[4];
}

template <class T>
class TreeNode
{
private:
    T value;
    ArrayList<TreeNode<int> > node;
public:

};



int main()
{

    TreeNode<int> treeNode;

    return 0;
}

Някой има ли идея защо това се компилира, но след това дава грешка.
Ако го променя на ArrayList<int > node; , не дава грешка.
 
Заради безкрайната рекурсия, която се получава:
Код:
ArrayList<TreeNode<int> > node;
Това извиква конструктора на ArrayList, което създава масив от 4 обекта от тип TreeNode<int>, което ги инициализира и за всеки от тях (по-точно само за първия, не стига до останалите) се създава ArrayList<TreeNode<int> > node; и всичко започва отначало. Махни конструктора на ArrayList и се компилира и работи.
 

Back
Горе