看起来我是类中的继承类型别名,但不是类模板之间的别名?我不明白为什么这段代码有效:
#include <iostream>
//template<typename T>
struct Test1
{
// using t1=T;
using t1=int;
};
//template<typename T>
struct Test2: public Test1//<T>
{
t1 x;
};
int main(int argc, char *argv[]) {
// Test2<int> a;
Test2 a;
a.x=5;
std::cout << a.x << std::endl;
}
并且此代码不会:
#include <iostream>
template<typename T>
struct Test1
{
using t1=T;
};
template<typename T>
struct Test2: public Test1<T>
{
t1 x;
};
int main(int argc, char *argv[]) {
Test2<int> a;
a.x=5;
std::cout << a.x << std::endl;
}
不通过模板继承类型吗?
答案 0 :(得分:2)
以下内容可行:
typename Test1<T>::t1 x;
并且,正如Xeo在上面的评论中指出的那样:
typename Test2::t1 x;