По-моему, самое неприятное наследие от С в С++, это порядок объявлений. То есть нельзя в двух классах работать со структурами, объявленными друг в друге.
В С следующее обьявление даст ошибку. typedef struct STR { STR *s; } STR;
А вот так можно делать. typedef struct STR STR; struct STR { STR *s; };
А вот в C++ в обявления в классах предполагают наличие в неявном виде еще и присутствие методов. Следовательно, полные структуры будут разные и из надо по разному идентифицировать.
Увы, С++ не даёт предекларировать вложенный класс/структуру без реализации основного класса. Это и не даёт взаимно использовать вложенные классы/структуры.
Comments 2
typedef struct STR { STR *s; } STR;
А вот так можно делать.
typedef struct STR STR;
struct STR { STR *s; };
А вот в C++ в обявления в классах предполагают наличие в неявном виде еще и присутствие методов. Следовательно, полные структуры будут разные и из надо по разному идентифицировать.
Reply
(The comment has been removed)
Reply
Leave a comment