gpt4 book ai didi

c++ - 模板中类型别名的继承

转载 作者:太空狗 更新时间:2023-10-29 21:45:18 27 4
gpt4 key购买 nike

看起来我在类之间继承了类型别名,但在类模板之间却没有?我不明白为什么这段代码有效:

#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;
}

类型不通过模板继承吗?

最佳答案

以下将起作用:

 typename Test1<T>::t1 x;

而且,正如 Xeo 在上面的评论中指出的那样:

typename Test2::t1 x;

关于c++ - 模板中类型别名的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17913129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com