返回结构而不初始化它

bas*_*ibe 3 c c++ struct

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

struct {
    unsigned char red;
    unsigned char green;
    unsigned char blue;
    unsigned char alpha;
} RGBA;
Run Code Online (Sandbox Code Playgroud)

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

但我无法弄清楚如何做到这一点.我能想到的只是创建一个局部结构,分别填充每个字段,然后返回它.

RGBA localStructure;
localStructure.red = r;
localStructure.green = g;
localStructure.blue = b;
localStructure.alpha = a;
return localStructure;
Run Code Online (Sandbox Code Playgroud)

我真的想做这样的事情

return RGBA(r,g,b,a);
Run Code Online (Sandbox Code Playgroud)

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

Eva*_*ran 7

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

typedef struct { ... } RGBA; /* what a lot of C programmers do */
Run Code Online (Sandbox Code Playgroud)

要么

struct RGBA { ... }; /* probably what you meant */
Run Code Online (Sandbox Code Playgroud)

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

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;
};
Run Code Online (Sandbox Code Playgroud)

然后你可以写:

return RGBA(r,g,b,a);
Run Code Online (Sandbox Code Playgroud)