友元函数无法访问 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
的参数时,您必须
- 在范围中class模板
A<>
和
- 还指定“某种类型”,如
int
(或 float
等),如下所示:
bool B (A<int>::S s) { //<-- Added change here
return true;
}
您也可以使用其他类型,我已经给出了 int
的示例。
此外,您需要制作 S
public 并在 struct S
定义后添加缺少的分号 ;
。
情况如下:
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
的参数时,您必须
- 在范围中class模板
A<>
和 - 还指定“某种类型”,如
int
(或float
等),如下所示:
bool B (A<int>::S s) { //<-- Added change here
return true;
}
您也可以使用其他类型,我已经给出了 int
的示例。
此外,您需要制作 S
public 并在 struct S
定义后添加缺少的分号 ;
。