【发布时间】:2021-12-11 22:31:02
【问题描述】:
我正在尝试做的事情相当简单。我有一个带有通用有效负载的模板类PayloadResult<T>,在另一个类中有一个返回此类对象的模板函数。
class Result
{
public:
template<class TPayload>
PayloadResult<TPayload> success(TPayload payload) { return PayloadResult<TPayload>(payload); }
}
template <TPayload>
class PayloadResult
{
private:
TPayload payload_;
public:
PayloadResult(TPayload payload)
{
payload_ = payload;
}
TPayload payload()
{
return payload;
}
}
编译器告诉我success函数的返回类型是No template named 'PayloadResult'
我将返回类型签名更改为 std::array
非常感谢!
【问题讨论】:
-
在声明之前不能使用
PayloadResult。交换类的顺序。 -
另外,
template <TPayload>不是有效的语法。你想要template <typename TPayload> -
@Frank 对,忘记了,谢谢!
-
@NathanOliver 如果 PayloadResult 继承自 Result 会怎样?
-
你可以转发声明它,但奇怪的是基类需要派生类才能存在。
标签: c++ function class templates generics