c++ - 来自模板类的友元函数

标签 c++ class templates friend

我有这样一个类:

#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; }
  // ...
};

由于 Foom_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/

相关文章:

c++ - 在函数参数化的模板中推导参数类型

c++ - Node.js 和 C++ 之间的集成

c++ - FOO::BAR 类命名空间的 Qt MOC 错误

python - 为什么要修改类属性?

c++ - 从函数模板类型中提取返回类型

c++ - 模板参数的潜在范围是什么?

c++ - 为什么使用 int 函数而不是 void?

c++ - 带有 WH_KEYBOARD 的 SetWindowsHookEx 卡在循环/队列中

C++私有(private)嵌套类——访问不同的函数

python - NameError 在 python 中使用 execfile