小编Lor*_*loi的帖子

为什么将指针转换为引用在我的访问器(getter)中不起作用?

我最近学会了如何使用这个技巧将指针转换为引用.但是当我在访问器中执行此操作时,它似乎会创建一个未定义的行为,我无法理解为什么.

为什么我要这样做

我有一个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)

c++ pointers reference

2
推荐指数
1
解决办法
137
查看次数

标签 统计

c++ ×1

pointers ×1

reference ×1