我有一个类模板和一个需要访问其私有字段的操作员模板。我可以成为模板朋友:
template <typename T>
class A {
int x;
template <typename U>
friend bool operator==(const A<U>& a, const A<U>& b);
};
template <typename T>
bool operator== (const A<T>& a, const A<T>& b) {
return a.x == b.x;
}
int main() {
A<int> x, y;
x == y;
return 0;
}
但有可能只为operator==<T>
成为A<T>
朋友,而不是operator==<int>
成为A<double>
的朋友吗?
答案 0 :(得分:6)
如果遇到submitButton.setOnAction(event -> submitData());
scene.setOnKeyPressed(keyEvent -> {
if(keyEvent.getCode().equals(KeyCode.ENTER))
submitData();
});
问题,请在定义friend
类之前提前声明。
A
然后你可以template <typename T>
bool operator== (const A<T>& a, const A<T>& b);
更清楚。完整解决方案(ideone):
friend
答案 1 :(得分:2)
是的,你可以。语法如下:
FROM gcr.io/tensorflow/tensorflow:latest
MAINTAINER Vincent Vanhoucke <vanhoucke@google.com>
RUN pip install scikit-learn
RUN rm -rf /notebooks/*
ADD *.ipynb /notebooks/
WORKDIR /notebooks
CMD ["/run_jupyter.sh"]
并将template <typename T>
class A {
int x;
friend bool operator==<>(const A& a, const A& b);
};
定义(或仅仅是声明)放在operator==
类之前。