2015-10-08 4 views
-2

У меня есть класс со следующим определением:Использовать объект из конструктора других методов класса

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

private: 

    long pos; 
}; 

Теперь я хочу, чтобы получить доступ к шаговым-объект в PlotterAxis::position() как

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

но я не знаю, как я могу сделать объект из параметра конструктора доступным в других методах PlotterAxis.

+0

если его метод PlotterAxis, частные члены уже доступны для метода –

+0

@Mattis Пожалуйста, примите либо ответ. – LogicStuff

+0

@LogicStuff сделано. – Mattis

ответ

0

Я не могу видеть доступа вы упомянули, но вам нужно хранить указатель в 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; 
} 
0

, но я не знаю, как я могу сделать объект из параметра конструктора доступным в других методах 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; 
} 
Смежные вопросы