尝试将指针与结构一起使用时出错
Getting error when trying to use pointer with struct
我正在尝试将 RGB 值编码到结构中并且它工作正常,但是当我尝试运行访问该结构的函数时,我收到一个异常,说我的结构是 nullptr。这是代码:
struct Color {
unsigned char R;
unsigned char G;
unsigned char B;
}*blue, *red, *green, *yellow, *purple, *pink, *brown;
void CreateColors()
{
blue->R = 0;
blue->G = 0;
blue->B = 255;
red->R = 255;
red->G = 0;
red->B = 0;
green->R = 0;
green->G = 255;
green->B = 0;
yellow->R = 255;
yellow->G = 255;
yellow->B = 0;
purple->R = 133;
purple->G = 87;
purple->B = 168;
pink->R = 255;
pink->G = 0;
pink->B = 191;
brown->R = 168;
brown->G = 130;
brown->B = 87;
}
如果你们能告诉我我做错了什么,或者使用更好的数据结构,那就太好了。我正在TA'ing一个cpp类,并试图巧妙地开始使用指针来预热它们。再次感谢。
同样,当我尝试使用这些值时,如下所示:
if (deg >= 0 && deg < boundaries[COAL_B])
{
pixels[i][j][0] = blue->R;
pixels[i][j][1] = blue->G;
pixels[i][j][2] = blue->B;
}
它会抛出相同的错误。
您正在创建一系列指向struct Color
的指针,但您没有初始化其中任何一个,因此因为它们是在文件范围内定义的,所以它们都设置为 NULL。 然后尝试取消引用这些 NULL 指针。 这将调用未定义的行为。
相反,您应该定义这些结构的实例,而不是指针:
struct Color {
unsigned char R;
unsigned char G;
unsigned char B;
} blue, red, green, yellow, purple, pink, brown;
然后将它们作为实例访问:
void CreateColors()
{
blue.R = 0;
blue.G = 0;
blue.B = 255;
red.R = 255;
red.G = 0;
red.B = 0;
...
更好的是,摆脱初始化函数并在定义它们时初始化它们:
struct Color {
unsigned char R;
unsigned char G;
unsigned char B;
};
struct Color blue = { 0, 0, 255}, red = { 255, 0, 0 }, green = { 0, 255, 0}, ...
声明指向结构的指针,但从不为其分配内存。 当您访问其成员时,您将取消引用空指针。
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 尝试将指针与结构一起使用时出错
- 将运算符<<与隐式转换的非基本数据类型一起使用时出错
- 将外部C++库与 CMake 一起使用时出错
- 将 find_if() 与数组一起使用的代码段中出错
- 可能的 GCC 链接器错误会导致将弱符号和局部符号链接在一起时出错
- OpenGL 将来自 ttf 的渲染器文本与背景纹理组合在一起时出错
- 将 argv 与函数一起使用时出错
- 将calcOpticalFlowPyrLK与OpenCV 2.3.1一起使用时出错
- 在C++中将cout与变量一起使用时出错
- 将lower_bound与矢量<对<字符串、双精度一起使用时出错>>
- 将cvMinMaxLoc与IplImage一起使用时出错
- 将"using namespace boost::numeric::ublas;"与 stl 矢量一起使用时出错
- 将 boost::spirit::qi::p hrase_parse() 与 qi::grammar 一起使用时出错
- 在C++中一起编译源文件和头文件时出错
- "Numeric value out of range" 将 SQLFetch() 与 SQL_C_FLOAT 一起使用时出错
- 与矢量大小一起使用时,for 循环中出错
- 在Visual Studio 2010(utility.obj)中将QuickFix与VC++一起使用时出错
- 将unique_ptr与成员函数指针一起使用时出错