首页 > 解决方案 > C++,“错误:‘void*’不是指向对象的指针类型”

问题描述

我需要创建一个不同类型的指针数组。一些变量在开头定义,它们的向量被分配到数组中的不同空间。稍后,从另一个进程中,可以使用存储在数组中的指针更改这些变量的值。变量直接从主进程访问(没有指针)

在启动时的主进程中:

void *values[255];
uint8_t val1 = 12;
uint16_t val2 = 3478;

SetIDVariable(&val1, 0);
SetIDVariable(&val2, 2);

其他功能:

void SetIDVariable(uint8_t *variable, uint8_t id) {
  values[id] = variable;
}

void SetIDVariable(uint16_t *variable, uint8_t id) {
  values[id] = variable;
}

在其他过程中(x 是用于检查值是否更改的任意数字):

values[0] = (void*)(val1 + x);
values[2] = (void*)(val2 + x);

在主进程中:

Serial.print("Value 1: "); Serial.println(val1);
Serial.print("Value 2: "); Serial.println(val2);

值始终是 12 和 3478。有什么想法吗?

标签: c++

解决方案


您正在将整数值转换为指针。也许你想这样做:

*((uint8_t *) values[0]) = (*((uint8_t *) values[0])+x);
*((uint16_t *) values[2]) = (*((uint16_t *) values[2])+x);

还看到这些问题:这个问题这个问题


推荐阅读