友元函数无法访问 class 模板中声明的结构成员

Friend function have no access to struct member declared in class template

情况如下:

template <class T>
class A {
    struct S {
        /* some data */
    }
    S some_member;
public:
    /* some methods */
    friend bool B (S);
};
 
bool B (S s) { //<-- ERROR "S was not declared in this scope"
    /* do something */
}

我应该怎么做才能正确编译程序?

在编写函数 B 的参数时,您必须

  1. 范围class模板A<>
  2. 还指定“某种类型”,如 int(或 float 等),如下所示:
bool B (A<int>::S s) { //<-- Added change here
    
    return true;
}

您也可以使用其他类型,我已经给出了 int 的示例。

此外,您需要制作 S public 并在 struct S 定义后添加缺少的分号 ;