如何获取类中函数的返回类型?

问题描述 投票:0回答:1

例如

class A
{
    int foo() {return 1;}
    void goo( decltype(((A*)nullptr)->foo()) i) {}
};

decltype(((A*)nullptr)->foo())
在这里不起作用,因为A是不完整的类。怎么办?

关于 coliru:http://coliru.stacked-crooked.com/a/830fdd982167a4e8

c++ class c++11 decltype
1个回答
0
投票

要检索类中成员函数的返回类型,可以使用尾随返回类型语法和 decltype 来获取返回类型。以下是如何实现此目标的示例:

cpp

复制代码 A 类 { 自动 foo() -> int { 返回 1; }

using ReturnType = decltype(std::declval<A>().foo());

公众: void goo(ReturnType i) {} };

在此代码中:

auto foo() -> int 指定 foo() 返回一个整数。 std::declval().foo() 在 decltype 内部使用来推导 foo() 成员函数的返回类型。 使用 ReturnType = ... 在类中定义了一个别名 ReturnType,它表示 foo() 的返回类型。 goo() 现在使用 ReturnType 作为其参数类型。 这样,您就可以在类 A 中为 foo() 的返回类型定义一个类型别名,从而允许您在类中的其他成员函数中使用它。

© www.soinside.com 2019 - 2024. All rights reserved.