为什么不能使用指向返回引用的指针?
Why is a pointer to a returned reference not possible?
为什么不行?toBeEvolved是一个std::vector,
, .getIndividual
返回一个元素
Individual& EvolutionaryAlgorithm::tournamentSelection(unsigned int i)
{
return toBeEvolved.getIndividual(i);
}
Individual* in2 = tournamentSelection(0);
编译时错误:没有从'Individual'到'Individual*'的可行转换
您需要获取引用的地址,以便将其转换为指针。即使你可能知道编译器在"幕后"将引用作为指针处理,在语言中没有明确的要求将引用实现为指针变量,并且你仍然需要使用显式的&
操作符来告诉它你想要将地址作为指针。所以:
Individual* in2 = &tournamentSelection(0);
其他海报对指针和引用的区别进行了更深入的探讨。
相关文章:
- C++取消引用指针.为什么会发生变化
- 深层复制具有自引用指针的类
- Visual c ++,使用字符串引用/指针调用 dll 函数
- std::unordered_map::提取引用/指针失效
- 为什么在引用指针时将 const 放在 & 符号的左侧有效,而在右侧则无效?
- 区分接受常量参数的函数引用/指针和与函数参数同名的非常量参数
- 如何在 c++ 中使用带有数学运算的引用/指针?
- 了解通过引用传递取消引用指针时C++堆/堆栈分配
- 取消引用指针并立即为其分配变量,导致分段错误
- 如何获取指向类(而不是对象)的引用/指针
- 将类型参数传递给自引用指针
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 在析构函数内取消引用指针时出现分段错误
- 来自引用指针的内存泄漏
- 引用指针后面的值
- 无法取消引用指针
- 引用指针调用成员函数
- 未定义的引用指针的变量模板在clang中功能,而不是GCC
- 取消引用指针以创建数组的副本
- 有关启动引用指针的引用的问题