gpt4 book ai didi

c++ - `typedef typename Foo::Bar Bar'的模板声明

转载 作者:IT老高 更新时间:2023-10-28 13:02:55 25 4
gpt4 key购买 nike

我在声明模板类型时遇到了很大的困难,如下所示。

#include <cstdlib>
#include <iostream>

using namespace std;


template <class T>
class Foo
{
typedef T Bar;
};

template <class T>
typedef typename Foo<T>::Bar Bar;




int main(int argc, char *argv[])
{

Bar bar;

Foo<int> foo;


system("PAUSE");
return EXIT_SUCCESS;
}

我得到错误

template declaration of `typedef typename Foo<T>::Bar Bar' 

关于线路

template <class T>
typedef typename Foo<T>::Bar Bar;

我这样做是因为我想避免在我的代码中写入 typename Foo::Bar。

我做错了什么?

最佳答案

C++ 中的 typedef 声明不能是模板。但是,C++11 添加了一种替代语法,使用 using 声明来允许参数化类型别名:

template <typename T>
using Bar = typename Foo<T>::Bar;

现在你可以使用了:

Bar<int> x;   // is a Foo<int>::Bar

关于c++ - `typedef typename Foo<T>::Bar Bar'的模板声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19192122/

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