初始化没有指针的结构体
C++ Initializing Struct Without Pointer
我有一个c++结构体
typedef struct DIFColor
{
uint8_t r;
uint8_t g;
uint8_t b;
} DIFColor;
我试着像这样初始化它:
DIFColor d = new DIFColor();
d.r = r;
d.g = g;
d.b = b;
但是编译器抱怨不能将指针转换为常规变量。指针是什么?从这个问题,我认为你可以简单地创建一个新的结构,而不必处理指针和动态内存分配与new
。这是否与我像C中那样初始化结构而不是使用构造函数有关?
error: conversion from 'DIFColor*' to non-scalar type 'DIFColor' requested
尝试:
DIFColor d = { r, g, b };
操作符new
将返回指向你的结构体的指针。如果你想在堆上声明对象
DIFColor* d = new DIFColor;
d->r = r;
d->g = g;
d->b = b;
或者在堆栈上声明不要使用new
。
DIFColor d;
d.r = r;
d.g = g;
d.b = b;
你不应该毫无理由地使用动态分配,在你的代码中没有理由,所以删除new
:
DIFColor d = new DIFColor();
替换为
DIFColor d;
中的
new
关键字DIFColor d = new DIFColor();
创建一个指针。你应该写
DIFColor d = {r,g,b}; // allocate on stack
或
DIFColor * d = new DIFColor(); // make a pointer
新操作符返回一个指针。
所以,正确的语法应该是:DIFColor* d = new DIFColor();
相关文章:
- C++ 使用成员函数返回结构体指针属性的值
- 在使用结构体和用函数填充其变量(使用指针)时遇到问题
- 如何使用结构体作为接口从函数返回指向数组的指针
- 如何在结构体中传递指向CURL的指针到向量
- 使用c++中从IDA导出的带有指针的结构体
- 设置两个结构体相等后,指针为NULL
- 结构体中的指针
- 指向结构体的向量指针错误
- 指向结构体的Void *指针
- 返回指向类定义的结构体的指针,多个作用域操作符
- 带有指针的结构体向量
- 你能解释一下指针和递归结构体吗?
- c语言中具有指针数组的结构体
- c++用数组、结构体和指针排序
- 初始化没有指针的结构体
- 如何在不激怒编译器的情况下传递指向结构体的指针?
- 如何释放一个结构体的内存,每次循环迭代的指针
- 如何根据结构体的字段之一对结构指针列表进行排序?
- 从c#调用c++函数-结构体,指针,函数指针
- 实现了结构体的向量和具有指向结构体指针的映射