class A;
typedef std::shared_ptr<A> A_ptr;
Интересно, что стандарт запрещает писать предварительные объявления для классов стандартной библиотеки (17.4.2.1/3). Единственно правильный вариант — включать стандартные файлы. Для группы iosteam классов в стандарте сделан отдельный файл <iosfwd> (27.2) с преварительным определениями. Его можно включать и программа будет считаться корректной.
можно сколько угодно определить typedef'ов, в случае не совпадения определения, будет сообщено об ошибки. так что можно везде писать.
ОтветитьУдалитьtypedef struct a_tag a; // declaration, forward typedef a
или вынести все эти typedef'ы в какой нибудь _fwd.h