Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;返回常量未签名字符_C++ - Fatal编程技术网

C++ C++;返回常量未签名字符

C++ C++;返回常量未签名字符,c++,C++,所以,我一直在努力解决这一点。我有一个简单的函数,定义如下: const unsigned char GetColor(unsigned int x, unsigned int y) { const unsigned char color[3] = {0, 1, 0}; return color; } 但是,我不允许这样做,编译器返回以下错误: Error: cannot initialize return object of type 'const unsigned cha

所以,我一直在努力解决这一点。我有一个简单的函数,定义如下:

const unsigned char GetColor(unsigned int x, unsigned int y)
{
    const unsigned char color[3] = {0, 1, 0};
    return color;
} 
但是,我不允许这样做,编译器返回以下错误:

Error: cannot initialize return object of type 'const unsigned char' with an lvalue of type 'const unsigned char [3]'
我是否应该将数组转换为指向数组的指针,并返回该数组?如果我这样做,我是否有可能在“超出范围”-即超出函数范围后将其删除

如果您能帮助我们理解这个问题,我们将不胜感激:)

编辑:最终目标是拥有一个函数,该函数可以在给定x和y值的情况下返回像素位置的颜色。这意味着颜色会发生变化,这取决于x和y的值。上面的例子是一种简化


它应该返回一个大小为3的常量无符号字符数组,每个数组中都有一个值。

您想返回一个数字数组。您是对的,尝试向局部变量传递某种类型的引用将导致作用域出现问题(技术上称为悬挂指针/悬挂引用),尽管原因与所述不同。(编译器只是抱怨单个
char
char
s数组之间的类型不一致。)

C++提供了几种安全的方法。例如,您可以返回
数组
类型:

#include <array>

std::array<unsigned char, 3> GetColor(unsigned int x, unsigned int y)
{
    return {0, 1, 0};
} 

但是,当您不再需要返回的字符串时,一定不要忘记删除它。

您想返回一个数字数组。您是对的,尝试向局部变量传递某种类型的引用将导致作用域出现问题(技术上称为悬挂指针/悬挂引用),尽管原因与所述不同。(编译器只是抱怨单个
char
char
s数组之间的类型不一致。)

C++提供了几种安全的方法。例如,您可以返回
数组
类型:

#include <array>

std::array<unsigned char, 3> GetColor(unsigned int x, unsigned int y)
{
    return {0, 1, 0};
} 

但是,当您不再需要返回的字符时,一定不要忘记
删除[]

std::array
struct Color{char r;char g;char b;}你真正的目标是什么?你真正想要的回报是什么?char或char[]?函数的返回类型是const unsigned char,但返回的是数组。你真正想做什么?我想返回像素位置(x,y)的颜色。这意味着我想返回一个大小为3的常量无符号字符数组,其中像素R,G,B的颜色为颜色[0],颜色[1],颜色[2]相关:
std::array
struct color{char R;char G;char B;}你真正的目标是什么?你真正想要的回报是什么?char或char[]?函数的返回类型是const unsigned char,但返回的是数组。你真正想做什么?我想返回像素位置(x,y)的颜色。这意味着我想返回一个大小为3的常量无符号字符数组,其中像素R,G,B的颜色与颜色[0],颜色[1],颜色[2]相关:我希望我能将其向上投票两次。非常感谢,先生!这正是我想要的,我喜欢你的解释!我希望我能投两次票。非常感谢,先生!这正是我想要的,我喜欢你的解释!