我有一个A类,它存储一些状态依赖于它的模板参数,并为它提供访问方法。在我的框架中,我需要启用派生类B,将更多基于状态的类添加到hirarchy中,以便可以使用单个API从派生类访问它们。用户不应该注意到状态类已经拆分成多个。这就是我提出的架构:
#include <iostream>
#include <type_traits>
using namespace std;
template<typename T1>
struct Test {
template<typename T2>
typename enable_if<is_same<T1, T2>::value, void>::type myFunction() {};
};
struct A : public Test<int> {};
struct B : public A, public Test<char> {};
int main() {
B b;
b.myFunction<int>();
return 0;
}
但不幸的是它不起作用,编译器仍然找到这两个函数并报告它们是不明确的。
知道如何实现这一目标吗?