我指的是“用 C++ 思考”一书中提到的练习之一。下面的代码片段会为调用 h.play 引发错误,我理解,因为成员 i 是私有的。但我期待同样的错误打电话给me.play。如果我评论调用h.play,代码编译得很好。为什么调用me.play没有错误?
class Buddy {};
template<class T> class My {
int i;
public:
void play(My<Buddy>& s) {
s.i = 3;
}
};
int main() {
My<int> h;
My<Buddy> me, bud;
h.play(bud);
me.play(bud);
}
谢谢你。
[编辑] 有没有办法查看编译器生成了哪些代码
My<int> h and
My<Buddy> me
? (任何类似于 -E 编译器标志的东西)?