如何传递全局volatile unsigned char类

How to pass global volatile unsigned char to class

本文关键字:char unsigned volatile 何传递 全局      更新时间:2023-10-16

在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世界…:)

您需要在类中声明field作为引用(通过保持非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在帐户中的伟大评论)。