考虑以下简单和通常的情况:
struct A;
struct B;
struct A {
B &b;
A(B &b_): b{b_} {
}
};
struct B {
A a;
B(): a{*this} {
}
};
int main() {
B b;
return 0;
}
这种编码模式用于通过组合将一个类紧密耦合到另一个类。现在,让我们假设我想通过模板来做到这一点。请考虑以下事项:
template <typename Bparam>
struct A;
template <typename Aparam>
struct B;
template <typename Bparam>
struct A {
Bparam &b;
A(Bparam &b_): b{b_} {
}
};
template <typename Aparam>
struct B {
Aparam a;
B(): a{*this} {
}
};
int main() {
B<A<B>> b; // infinitely many template parameters here ???
return 0;
}
是否可以在C ++中实现这样的东西?
答案 0 :(得分:5)
这个怎么样?
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
MenuDialog menuDialog = MenuDialog.newInstance();
menuDialog.show(ft, "dialog");
}