Я использую несколько шаблонов в своем проекте. Я предпочитаю подход размещения объявлений в файл .h и определения в файле .tpp .
В настоящее время он настроен так:
Код: Выделить всё
// myclass.h
class myClass
{
template
T foo();
void bar();
}
#include "myclass.tpp"
< /code>
// myclass.tpp
#include "myclass.h"
template
T myClass::foo()
{
// do some stuff
}
< /code>
// myclass.cpp
#include myclass.h
void myClass::bar()
{
// do some stuff
}
< /code>
This compiles and works just fine, but in myclass.tpp
Я получаю ошибку в включенный файл: основной файл не может быть включен рекурсивно при создании преамбулы . Как я уже сказал, несмотря на ошибку, которую она компилирует, и программа работает, но мне не нравится оставлять ошибки без изменений. /> Я чувствую, что что -то упускаю в этом подходе. Как вы можете определить членов класса, не включая заголовок, который включает в себя заявления? Единственный способ, которым я могу придумать, - это пересылать объявление класса в файле .tpp , но это нигде не упоминалось, что я видел этот подход, описанный.
Подробнее здесь:
https://stackoverflow.com/questions/797 ... dentifiers