gpt4 book ai didi

c++ - 如何在类外使用模板参数名称?

转载 作者:行者123 更新时间:2023-12-01 14:44:39 25 4
gpt4 key购买 nike

我正在学习 C++。
我想使用模板参数名称,因为它在类之外。
我找不到最佳解决方案,但现在我使用“使用”声明。但是它不能使用相同的名称。
有没有更好的解决方案?或者有没有什么好的习惯或者好的命名方式可以通过“使用”来重新声明模板参数?

以下代码是示例;它通过使用 Type = T_TypeA 重新声明 T_TypeA 但我想使用 T_TypeA ,因为它在结构 B 中。

template <typename T_TypeA>
struct A {
using Type = T_TypeA;
};

template <typename Object>
struct B {
using Type = typename Object::Type;
Type object = 3;
};

void test_using_for_template_parameter_name(void) {
B<A<int>> b;
std::cout << "value = " << b.object << std::endl;
}

最佳答案

The following code are example; it re-declares T_TypeA by using Type =
T_TypeA
but I would like to use T_TypeA as it is in struct B.



模板参数名称仅在函数模板或类模板中有用且可见,在其之外没有任何意义。所以:
template <typename T_TypeA>
struct A {
using Type = T_TypeA;
};
T_TypeA这里仅用作实例化时用作模板参数的类型的占位符名称 struct A .

这就是为什么我们需要 typedef 来为类型的名称取别名。所以,如果 T_TypeA是您想要显示的名称:您可能想要:
template <typename TypeA>
struct A {
using T_TypeA = TypeA;
};

关于c++ - 如何在类外使用模板参数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43290863/

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