赞
踩
class cat; struct dog { cat *point; friend bool operator<(const dog &a, const dog &b) { cat *cat_a = a.point; cat *cat_b = b.point; return cat_a->age < cat_b->age; } } class cat { public: int age; }
编译报错: invalid use of incomplete type
报错的原因大概是cat向前声明,但是编译器在运行friend bool operator<(const dog &a, const dog &b) 时暂时还不知道cat的具体实现方式,所以无法获得变量age的值。
将cat的声明放在dog前面可以解决。
class cat; class cat { public: int age; } struct dog { cat *point; friend bool operator<(const dog &a, const dog &b) { cat *cat_a = a.point; cat *cat_b = b.point; return cat_a->age < cat_b->age; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。