klasa szablonowa w pojemniku STL

0

Witam,
Robię program który korzysta z list STL'a które przechowują obiekty klasy szablonowej.

template <int rozmiar> class Node;
//typedef Node<rozmiar> Noder;

list<Node<rozmiar> > open_list;
list<Node<rozmiar> > close_list; 

Wyświetla mi takie błędy:

'rozmiar' was not declared in this scope
template argument 1 is invalid

Proszę o pomoc w rozwiązaniu tego problemu.

0

to "typedef" pozostało po kombinowaniu a zapomniałem usunać

0

Żeby to działało rozmiar musi być stałym intem. Ta stała powinna być też inaczej nazwana, żeby się nie mieszała z oznaczeniem rozmiar w deklaracji szablonu Node.

0

Czyli użycie szablonu nie ma sensu jeśli rozmiar ma być stały i już zdefiniowany? Jeśli tak to czy jest jakiś sposób na ominięcie tego, tak żeby można było przerobić to na szablon gdzie rozmiar jest podawany podczas tworzenia tego obiektu w funkcji main?

0

O coś takiego chodzi?

#include <iostream>
using namespace std;

template <int R> struct Node
{
    Node() : size(R) {}

    int size;
    int tab[R];
};
 
int main()
{
	Node<3> n = Node<3>();
        cout << n.size << endl;
        n.tab[0] = n.tab[1] = n.tab[2] = 2;
        cout << n.tab[2] << endl;

	Node<4> m = Node<4>();
        cout << m.size << endl;
        m.tab[0] = m.tab[1] = m.tab[2] = m.tab[3] = 4;
        cout << m.tab[3] << endl;
}
0

Dzięki, dokładnie o to :) Tylko jak w to tego STL'a wmontować?

0

list<Node<tu_wpisz_cos_co_jest_znane_podczas_kompilacji> > open_list;

1 użytkowników online, w tym zalogowanych: 0, gości: 1