// grille.hh template class grille { public: grille(); T* operator[](const unsigned int x); private: T tab[a][b]; }; template std::ostream &operator<<(std::ostream &out, const grille &g); // grille.cc template grille::grille() { } template T* grille::operator[](const unsigned int x) { return tab[x]; } template std::ostream &operator<<(std::ostream &out, const grille &g) { std::cout << "Test" << std::endl; return out; }