【发布时间】:2017-04-03 08:08:24
【问题描述】:
如何对班级成员使用自动类型扣除?比如下面的代码
struct A
{
auto foo(); // foo is defined in another file
};
int main()
{
A a;
a.foo();
}
其中foo 的返回类型为auto 会导致以下错误:
error: function 'foo' with deduced return type cannot be used before it is defined
a.foo();
^
这个错误是可以理解的,因为编译无法知道foo的返回类型是什么而不知道它的定义。
我的问题是,如果函数的声明和定义是分开的,是否有任何解决方法或某种编程模式来规避自动返回类型不能用于类成员函数的问题。
【问题讨论】:
-
没有。使用返回类型推导时,定义必须可见,然后才能使用(成员)函数。
-
可以将函数的声明和定义分开。但定义必须在函数使用前可见。
-
这里不需要“解决方法”,因为没有需要解决的问题。只是不要像那样使用
auto。