template <typename vec1, typename vec2>
class fakevector
{
public:
/* Do something */
};
template <class A>
class caller
{
public:
struct typeList
{
struct typeOne
{
//...
};
};
typedef fakevector<typeList::typeOne,int> __methodList; /* This will trigger compile error */
};
我收到的错误消息是:
错误:类型/值不匹配 模板参数中的参数1 'template class fakevector'的列表
错误:期望一个类型,得到'caller :: typeList :: typeOne'
如果模板从调用者类中移除,则会报告无错误, 像这样
班级来电者 { 上市: struct typeList {.... };
我不知道原因。非常感谢你!
答案 0 :(得分:3)
尝试:
typedef fakevector<typename typeList::typeOne,int> __methodList;
答案 1 :(得分:2)
看起来编译器不确定typeOne是什么。
typedef fakevector<typename typeList::typeOne,int>
应编译
答案 2 :(得分:1)
尝试typedef fakevector<typename typeList::typeOne,int>
名称
时需要名称的typename
前缀
此外,除非至少前三个条件成立,否则不允许使用typename
前缀。