我有这样一个类:
#include "Blarg.h"
// ...
class Foo : public Bar {
// ...
static double m_value;
// ...
};
还有一个是这样的:
template<class X, class Y>
class Blarg : public Bar {
// ...
void SetValue(double _val) { Foo::m_value = _val; }
// ...
};
由于 Foo
的 m_value
是私有(private)的(我想保持这种状态),我想我应该声明 SetValue
充当 Foo
类的友元,以便它可以在需要时访问静态成员。
我已经尝试在 Foo
的公共(public)区域中按照这些行进行声明:
template<class X, class Y> friend void Blarg<X, Y>::SetValue(double _val);
template<class X, class Y> friend void Blarg::SetValue(double _val);
friend void Blarg::SetValue(double _val);
...但编译时运气不好。如果可能的话,正确的语法是什么?
最佳答案
您必须在 Foo
类之前定义 Blarg
类,以便将 Blarg
的方法之一标记为 friend
。确定 Blarg
是在 Foo
声明之前定义(或包含)的吗?
关于c++ - 来自模板类的友元函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17949700/