Próbuję uprościć plik nagłówkowy "include spaghetti" za pomocą deklaracji forward i przenoszenia #includes do pliku implementacji. Jednak nadal pojawia się następujący scenariusz:Przekaż dalej publicznie typedef class w C++
//Foo.h
#include "Bar.h"
class Foo
{
public:
void someMethod(Bar::someType_t &val);
};
//Bar.h
.
.
.
class Bar
{
public:
typedef std::vector<SomeClass> someType_t;
};
Chcę usunąć #include "Bar.h" w tylu przypadkach, jak to możliwe. Widzę również sytuację, w której typedef w Bar.h znajduje się poza klasą Bar. Zakładam, że obie sytuacje można rozwiązać w ten sam sposób.
Wszelkie pomysły?
Czy Bar jest rzeczywiście klasą lub szablonem? Odpowiedzi będą się różnić, jeśli Bar jest szablonem, czyli jeśli Bar nie jest unikalny, a więc Bar :: someType_t nie jest unikalny. –