std::function 的类型名称关键字
typename keyword for std::function
我有一个class
class Consumer
{
public:
typedef std::function<void()> EventHandler;
...
};
我想将其用作模板
template<class Consumer>
class ConsumerGroup
{
public:
typename Consumer::EventHandler EventHandler;
ConsumerGroup(EventHandler handler);
};
但是上面一个结果编译错误说 EventHandler 不是一个类型。
在这种情况下我应该如何使用 typename 关键字?
您需要一个类型别名来依赖 Consumer::EventHandler
。
这应该有效:
using EventHandler = typename Consumer::EventHandler;
对于较低的编译器版本(C++11 之前)
typedef typename Consumer::EventHandler EventHandler;
typename
关键字不用于导入或定义新的类型别名。您所做的实际上是定义一个名为 EventHandler
.
的 成员变量
您需要再次使用 typdef
来定义类型别名:
typedef typename Consumer::EventHandler EventHandler;
或者使用现代 C++ using
:
using EventHandler = typename Consumer::EventHandler;
我有一个class
class Consumer
{
public:
typedef std::function<void()> EventHandler;
...
};
我想将其用作模板
template<class Consumer>
class ConsumerGroup
{
public:
typename Consumer::EventHandler EventHandler;
ConsumerGroup(EventHandler handler);
};
但是上面一个结果编译错误说 EventHandler 不是一个类型。 在这种情况下我应该如何使用 typename 关键字?
您需要一个类型别名来依赖 Consumer::EventHandler
。
这应该有效:
using EventHandler = typename Consumer::EventHandler;
对于较低的编译器版本(C++11 之前)
typedef typename Consumer::EventHandler EventHandler;
typename
关键字不用于导入或定义新的类型别名。您所做的实际上是定义一个名为 EventHandler
.
您需要再次使用 typdef
来定义类型别名:
typedef typename Consumer::EventHandler EventHandler;
或者使用现代 C++ using
:
using EventHandler = typename Consumer::EventHandler;