Следующий код компилирует идеально:Круговое Включение с шаблонами
// MyFile.h
#ifndef MYFILE_H_INCLUDED
#define MYFILE_H_INCLUDED
template <typename Datatype>
class MyClass
{
public:
void MyMethod();
}
#include "MyFile.cpp"
#endif
// MyFile.cpp
#ifndef MYFILE_CPP_INCLUDED
#define MYFILE_CPP_INCLUDED
#include "MyFile.h"
template <typename Datatype>
void MyClass<Datatype>::MyMethod()
{
// ...
}
#endif
Определение других методов и функций может быть отделено от деклараций таким же образом. Есть ли недостатки в использовании этого подхода? Можно ли полагаться на это поведение?
Что вы пытаетесь достичь здесь? – ltc
@GMan Является ли '.tpp' стандартным расширением файла для такого рода вещей или может быть просто что-то, что не будет скомпилировано? – Maxpm
Стандарт немного силен термином. Относительно распространенное было бы лучшим описанием. –