c ++紧耦合模板定义,无限重复模板参数

时间:2018-06-13 13:38:56

标签: c++

考虑以下简单和通常的情况:

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 ++中实现这样的东西?

1 个答案:

答案 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");
}