【发布时间】:2015-11-19 12:03:09
【问题描述】:
有没有办法在这种情况下使用 auto 关键字:
void foo(bar& output){
output = bar();
}
int main(){
//Imaginary code
auto a;
foo(a);
}
当然,不可能知道a是什么类型。因此,解决方案应该是以某种方式将它们合并到一个句子中。这个可以吗?
【问题讨论】:
-
我不这么认为..如果你给
foo添加一个重载会发生什么? -
如果你在写程序的时候不知道
a的类型,你就有一个不可能的问题。对于函数,解决方案是模板,但您确实需要知道您声明的变量的类型,一种或另一种方式。 -
简单的答案是否定的(顺便说一句,将它们合并成一个句子是什么意思)。
-
auto 关键字告诉编译器使用初始化器推断 RHS 的数据类型,因此没有初始化器编译器无法推断类型
-
声明更简单:除非类型可以在它出现的同一语句中派生,否则不能使用 auto。