为什么不能使用指向返回引用的指针?

Why is a pointer to a returned reference not possible?

本文关键字:引用 指针 返回 不能 为什么      更新时间:2023-10-16

为什么不行?toBeEvolved是一个std::vector,, .getIndividual返回一个元素

Individual& EvolutionaryAlgorithm::tournamentSelection(unsigned int i)
{
    return toBeEvolved.getIndividual(i);
}
Individual* in2 = tournamentSelection(0);

编译时错误:没有从'Individual'到'Individual*'的可行转换

您需要获取引用的地址,以便将其转换为指针。即使你可能知道编译器在"幕后"将引用作为指针处理,在语言中没有明确的要求将引用实现为指针变量,并且你仍然需要使用显式的&操作符来告诉它你想要将地址作为指针。所以:

Individual* in2 = &tournamentSelection(0);

其他海报对指针和引用的区别进行了更深入的探讨。