Во-первых, в вашем первом фрагменте 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);