洪水填充算法初始化c ++

时间:2016-08-09 15:18:40

标签: c++ algorithm

编辑:好的,在几个答案后,我会做一些更正:

void CDIB32::GetRGB(int x, int y, BYTE& r, BYTE& g, BYTE& b)
{
    if (x >= Width() || y >= Height())
        IERROR;

    int off = y * ByteWid() + x * 4;
    b = m_pBits[off];
    g = m_pBits[off+1];
    r = m_pBits[off+2];
}

另外,在我对参数做任何事情之前,这是GetRGB函数:

void CDIB32::SetRGB(int x, int y, BYTE r, BYTE g, BYTE b)
{
    //ASSERT(x < Width() && y < Height());

    int off = y * ByteWid() + x * 4;
    m_pBits[off] = b;
    m_pBits[off+1] = g;
    m_pBits[off+2] = r;
}

这是SetRGB功能:

SELECT * FROM worker_leave  
WHERE YEAR(yearAppplied) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR)) 
   OR YEAR(yearAppplied) = YEAR(CURDATE())

用户OzMiz的假设是正确的,即导致错误的行。对于缺乏清晰度表示道歉。而且这个算法确实是你想到的这个精确算法的片段。关于如何做得更好的任何想法都表示赞赏。

2 个答案:

答案 0 :(得分:4)

错误消息表明GetRGB函数期望RGB参数为BYTE&,即对字节的引用。

因此,您应该相应地声明您的本地rgb变量,然后直接将它们传递给函数:

BYTE r, g, b;
scr->GetRGB(mid.x, mid.y, r, g, b);

您的while循环也已损坏 - 您需要使用&&||加入这三个条件,而不是,运算符。

答案 1 :(得分:1)

我假设您收到此行的错误:

scr->GetRGB(mid.x, mid.y, (byte)& r, (byte)& g, (byte)& b);

最后三个参数是地址,您尝试将它们转换为值。 我认为这将解决您的错误:

scr->GetRGB(mid.x, mid.y, (byte*)& r, (byte*)& g, (byte*)& b);