在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世界......)。
答案 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的好评)。