<分区>
我在 C++
中遇到了以下程序:
template <class T>
class Foo {
Foo() {};
friend T;
};
class Bar : public virtual Foo<Bar> {
void doPrivateStuff();
public:
template<typename T>
void baz(T a) { cout << a << endl; }
};
它说使用这种方式不可能继承Bar
。我有两个问题:
- 是什么让编译器不允许从
Bar
继承? - 我可以虚拟继承它吗?
- 我知道
friend
是用来声明一个方法或类,可以访问该类的私有(private)字段和方法,但是friend T
是什么意思?
它基于以下页面: