gpt4 book ai didi

c++ - 无论如何,模板不是用作参数,而是用作全局类型吗?

转载 作者:行者123 更新时间:2023-11-28 00:01:24 25 4
gpt4 key购买 nike

每当我创建一个模板时,我知道将它作为函数参数传递,但是有什么特别的原因导致我不能在我的主函数中使用模板吗?

template <class Tmp>

int main()
{
Tmp pizza;

}

但是作为参数传递总是有效的

template <class Tmp>
Tmp add(Tmp x, Tmp y)
{
return x+y;

}

上面的代码不会运行,在我尝试的变量声明行旁边它声明“未知类型'Tmp'”,但我假设因为我在我的主要函数之外声明了模板它会考虑到这一点。有什么特别的原因吗?似乎每个人都只是在函数参数中使用模板,仅此而已。

最佳答案

你快到了。但是 C++ 是一种静态类型语言,因此编译器需要在编译时知道披萨类型>。这个

template <class Y> struct/*members are public by default*/ Tmp
{
typedef Y type;
};

int main()
{
Tmp<int>::type pizza; /*pizza will be an int*/
}

是合法的。

关于c++ - 无论如何,模板不是用作参数,而是用作全局类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38763363/

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