如何将全局volatile unsigned char传递给class

时间:2014-06-15 22:29:03

标签: c++ pointers reference

在C ++中,我如何通过引用接受变量,然后将其存储在对象实例上 - 以便我可以随时修改它?

有问题的变量目前是volatile unsigned char

澄清的示例类:

class SomeClass {
    public:
        SomeClass(volatile unsigned char &value);
        void changeIt();
    private:
        volatile unsigned char _value;
}

SomeClass::SomeClass(volatile unsigned char &value) {
    _value = value;
}

void SomeClass:changeIt() {
    _value++;
}

我现在想要的是让调用者能够传递这个变量,让我随时改变它。我需要这个的原因是传递的变量是特殊的(它映射到微控制器上的CPU注册表)。

我希望能够做到这一点:

SomeClass myClass(PORTB);

// PORTB is the same

myClass.changeIt();

// PORTB is changed

我正在试图解决这个问题(我来自Java世界......)。

1 个答案:

答案 0 :(得分:3)

您需要在类中声明字段作为引用(通过保持非ref,您为每个实例创建一个副本):

class SomeClass {
    public:
        SomeClass(volatile unsigned char &value);
        void changeIt();
    private:
        volatile unsigned char& _value;
}

现在唯一需要在执行构造函数体之前存储引用,并且您可以在初始化程序列表中执行此操作:

SomeClass::SomeClass(volatile unsigned char &value): 
  _value(value)
{
}

现在其他所有内容都应该有效(但是在帐户中接受DaoWen的好评)。