33,321
社区成员




template<typename T, typename F>
Big(std::vector<T>& infos, F f)
{
std::for_each(info.begin(), info.end(), f);
}
std::vector<A> va;
Big(va, [](A& a){ a.funA1();});
std::vector<B> vb;
...
Big(vb, [](B& b){ b.funB1();});
abstract class BaseA{
abstract void func();
}
class A1::BaseA
{
void func()
{
}
};
typedef vector<A1> A1Vec;
class A2::BaseA
{
void func()
{
}
};
typedef vector<A2> A2Vec;
class A
{
public:
template <typename T1>
void Big(T1& infos)
{
这里不懂你什么意思,有什么依赖只能这样!
infos.begin()->func();
}
};
//class A,template fun
class A
{
public:
template <typename T1>
void Big(T1& infos)// 1
{
if(1)
lit1(infos); //2
else
lit2(infos); //3
}
template <typename T1>
void lit1(T1& infos)
{
infos.begin()->fun1(); //2
}
template <typename T1>
void lit2(T1& infos)
{
infos.begin()->fun2(); //3
}
};
// class A1 A2
class A1
{
void funA1()
{
}
};
typedef vector<A1> A1Vec;
class A2
{
void funA2()
{
}
};
typedef vector<A2> A2Vec;
// main class ...
class A3
{
void funA3(const A2Vec& A2 )
{
Big(A2) ; // 1
}
};
funA3函数调用模板函数Big,Big函数下有两个模板函数,分别实现A1和A2类的函数。
这时候,传入的参数如果是A2Vec A2 ,则 标号2处编译不过。
如果解决此种编译错误?
谢了!