tozhe_skazo4nik ([info]tozhe_skazo4nik) wrote,
@ 2009-04-14 23:54:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
По-моему, самое неприятное наследие от С в С++, это порядок объявлений. То есть нельзя в двух классах работать со структурами, объявленными друг в друге.



(4 comments) - (Post a new comment)


[info]realurix
2009-04-14 09:43 pm UTC (link)
В С следующее обьявление даст ошибку.
typedef struct STR { STR *s; } STR;

А вот так можно делать.
typedef struct STR STR;
struct STR { STR *s; };

А вот в C++ в обявления в классах предполагают наличие в неявном виде еще и присутствие методов. Следовательно, полные структуры будут разные и из надо по разному идентифицировать.

(Reply to this)


[info]zabivator
2009-04-24 05:45 pm UTC (link)
А что мешает использовать предекларацию?

(Reply to this) (Thread)


[info]tozhe_skazo4nik
2009-04-24 08:41 pm UTC (link)
Увы, С++ не даёт предекларировать вложенный класс/структуру без реализации основного класса. Это и не даёт взаимно использовать вложенные классы/структуры.

(Reply to this) (Parent)(Thread)


[info]zabivator
2009-04-24 11:32 pm UTC (link)
А, это да, серьёзный косяк.
Я проглядел условие "вложенный класс".

(Reply to this) (Parent)


(4 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…