如何传递全局volatile unsigned char类
How to pass global volatile unsigned char to class
在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在帐户中的伟大评论)。
相关文章:
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- 错误:从'void*'到'const uint8_t* {aka const unsigned char*}'的转换无效 [-允许]
- C++ - 从 "int" 到 "unsigned char" 的缩小转换无效
- 让 'std::vector<unsigned char>' 从 'std::string' 中窃取内存
- 无法从'unsigned short [9]'转换为'char []'
- 使用外部变量会导致"unsigned char"错误LNK2001
- CPPrestsdk (Casablanca) JSON 值到 std::vector<unsigned char>
- memcpy unsigned char to int
- 有没有办法将 vector<unsigned char> 插入 postgresql 表中,具有 bytea 属性,没有 UTF8 编码错误?
- 没有匹配函数来调用"std::basic_ofstream<char>::write(std::string*, long long unsigned int)"
- 将数据从 vector<unsigned char> 传输到无符号 char[]
- 如何修复此 OpenCV 错误:断言失败((无符号)i < (无符号)cn) 在 cv::Vec<unsigned char,3>:::运算符 (), 文件
- 你什么时候会使用"signed char"而不是"unsigned char"?
- 错误:初始化时无法将'const unsigned char (*)[7]'转换为'const unsigned char (*)[]'
- 如何将std :: string传递到C 中的const unsigned char **
- 类型 "unsigned char *" 的参数与类型 "const char *" 的参数不兼容
- C 如何在功能调用中从char *转换为unsigned char *
- 从'byte* {aka unsigned char*}'到'dword {aka长unsigned int}'失去精度
- 'unsigned short var'与'unsigned char var [2]' C++
- C++ cast char * to unsigned char