我最近学会了如何使用这个技巧将指针转换为引用.但是当我在访问器中执行此操作时,它似乎会创建一个未定义的行为,我无法理解为什么.
为什么我要这样做
我有一个class WalkerOwner拥有该实例的class Walker.Walker代码中的其他地方需要此实例,因此我为类提供了一个访问器(getter)WalkerOwner,它提供了一个引用.
class WalkerOwner
{
public:
...
Walker& getWalker() {return m_ownedWalker;} ;
private:
Walker m_ownedWalker;
};
Run Code Online (Sandbox Code Playgroud)
后来,我意识到WalkerOwner实际上应该由于某种原因在内部管理指向walker的指针.因为我不想重构我的其余代码,改变对指针的每个引用,我试图将指针转换为getter中的引用.
显示问题的代码
#include <iostream>
#include <string>
using std::string;
class Walker
{
public:
Walker() : m_travelledDistance(5) {};
~Walker(){};
void swank() { std::cout << "I have walked " << distanceAsString() << "! How good I am!" << std::endl; };
private:
// Calling this function makes the result even more impressive
string …Run Code Online (Sandbox Code Playgroud)