我正在创建一个类,正在使用结构数组做一些事情,但问题是我无法将数组引用分配给该对象。
已经在尝试找到解决方案,但只能使用
memcpy
将整个数组复制到对象变量,如何在不复制数组的情况下以不同的方式执行此操作?
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define arrayLength(array) (size_t)((sizeof array) / (sizeof array[0]))
typedef struct someStruct {
int id;
char *name;
} someStruct;
class someClass {
private:
someStruct *list;
public:
someClass(someStruct const *const listData) { list = listData; }
};
int main() {
someStruct list[255] = {
{1, "one"},
};
someClass object(list);
return 0;
}
错误:从“const someStruct*”到“someStruct*”的无效转换[-fpermissive] someClass(someStruct const *const listData) { 列表 = listData; }
更新: 当时这个问题最初被问到。我还是一个学习C/C++的新手。在这种情况下,我被迫在不了解指针的情况下如何用 Python 编写 C/C++ 代码。
您提供一个 const 指针,然后将一个非常量指针分配给该 const 指针。编译器不允许您将 const 降级为非 const。
使 someClass 的列表成为 const 指针,或从初始化参数中删除 const 限定符。
如果您不确定编译器错误消息, 简而言之:
在构造函数主体中,您尝试将指向 const 值的指针分配给指向值的指针,这意味着如果编译器允许您,您将尝试使用指针更改 const 值,因此您当然不能使用指向 const 的指针。至少没有任何特殊用途的铸件。 这不是代码示例中唯一应该更改的内容,但您可以从那里开始。