c++ - 返回一个结构而不初始化它

标签 c++ c struct

我有一个像这样的非常简单的颜色结构

struct {
    unsigned char red;
    unsigned char green;
    unsigned char blue;
    unsigned char alpha;
} RGBA;

现在在某些函数中,我想返回这样的结构。

但我不知道该怎么做。我能想到的就是创建一个本地结构,分别填充每个字段,然后返回它。

RGBA localStructure;
localStructure.red = r;
localStructure.green = g;
localStructure.blue = b;
localStructure.alpha = a;
return localStructure;

我真的很想做这样的事情

return RGBA(r,g,b,a);

有没有办法在 C/C++ 中实现这一点?

最佳答案

首先,在您的第一个片段中,RGBA 是一个类型为未命名结构的对象,我认为这不是您想要的。您的意思可能是:

typedef struct { ... } RGBA; /* what a lot of C programmers do */

struct RGBA { ... }; /* probably what you meant */

无论如何,要回答你的问题,给它一个构造函数!

struct RGBA {
    RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a) : red(r), green(g), blue(b), alpha(a) {
    }

    unsigned char red;
    unsigned char green;
    unsigned char blue;
    unsigned char alpha;
};

然后你可以这样写:

return RGBA(r,g,b,a);

关于c++ - 返回一个结构而不初始化它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5005448/

相关文章:

c - 如何在不使用 "goto"的情况下摆脱这个深层嵌套的循环?

C - 在结构中分配结构数组

c++ - 使用结构方法返回时出错 - C++

c++ - 是否有任何端口可用于向每个进程广播?

c - 读取进程的起始地址和长度(虚拟内存映射)

c++ - OPENGL 上的示例项目

c++ - 浮点运算

c - 将数据添加到使用 C 中的 2 个结构实现的堆栈 : moving pointers

c++ - 将光标移动到控制台的左下方

c++ - 在 gtk 文本字段中交换背景颜色 (gtkmm C++)