【问题标题】:Use object from constructor in other class methods在其他类方法中使用构造函数中的对象
【发布时间】:2016-01-06 10:27:57
【问题描述】:

我有一个具有以下定义的类:

class PlotterAxis
{
public:
    PlotterAxis(Stepper *stepper);
    long position();

private:

    long pos;
};

现在我想像访问PlotterAxis::position() 中的步进器对象

long PlotterAxis::position()
{
    return pos;
}

但我不知道如何使构造函数参数中的对象在 PlotterAxis 的其他方法中可用。

【问题讨论】:

  • 如果它是 PlotterAxis 的方法,则该方法已经可以访问私有成员
  • @Mattis 请接受任一答案。

标签: c++ object methods constructor


【解决方案1】:

我看不到你提到的访问,但你需要将指针存储在PlotterAxis,这是肯定的:

class PlotterAxis
{
public:
    PlotterAxis(Stepper *stepper);
    long position();

private:
    // raw pointer, beware of stepper's lifetime and copy semantics of PlotterAxis
    Stepper *stepper;
    long pos;
};

PlotterAxis::PlotterAxis(Stepper *stepper) : stepper(stepper) {}

然后你就可以访问它了:

long PlotterAxis::position()
{
    stepper->doSomething();
    return pos;
}

【讨论】:

    【解决方案2】:

    但我不知道如何使构造函数参数中的对象在 PlotterAxis 的其他方法中可用。

    您必须将输入 PlotterAxis 作为成员变量存储在您的类中,并在您需要的任何地方使用它。

    class PlotterAxis
    {
       public:
          PlotterAxis(Stepper *stepper) : stepper_(stepper) {}
          long position();
    
       private:
    
          Stepper *stepper_;
          long pos;
    };
    

    long PlotterAxis::position()
    {
        // Use stepper_ if you need to.
        stepper_->someFunction();
        return pos;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 2017-04-01
      • 2016-08-20
      • 1970-01-01
      • 2017-12-15
      • 2013-10-05
      • 2016-04-08
      相关资源
      最近更新 更多