标题功能

时间:2014-10-24 12:11:40

标签: c++ header

编辑:通过不工作我的意思是在我的主阵列中,mA中的mA没有显示数组中元素的任何变化。

我一直在检查我的功能,因为我开发了标题并且它们已经完美运行:直到我到达最终标题MonitorArray.h

  

mA.getScreen(ⅰ).checkScreen();

没有工作,我无法理解为什么。所以我在MonitorArray内创建了一个新函数来使用相同的函数完成类似的工作,令我惊讶的是它有效。

  

mA.pollScreens();

使用(Inside MonitorArray.h):

monitorArray[i].checkScreen();

功能getScreen:

ScreenArray MonitorArray::getScreen(int arrayPointer)
{
    if (arrayPointer<0 || arrayPointer>=monitors)
    {
        return false;
    }
    else
    {
        return monitorArray[arrayPointer];
    }
}

功能checkScreen和addArray:

void ScreenArray::checkScreen()
{
    HDC dMonitor;
    PixelArray pArray;
    int lenX = 0, lenY = 0;
    dMonitor = CreateDC(iMonitor.szDevice, iMonitor.szDevice, NULL, NULL);

    lenX = (iMonitor.rcWork.right - iMonitor.rcWork.left) - 1;
    lenY = (iMonitor.rcWork.bottom - iMonitor.rcWork.top) - 1;

    pArray.setColour(0, GetPixel(dMonitor, 0, 0));
    pArray...
    ...
    ...
    addArray(&pArray);
    ReleaseDC(NULL, dMonitor);
}

void ScreenArray::addArray(PixelArray* pA)

    {
        if (previousCheck(*pA))
        {
            arrayPosition = 0;
            screenArray[arrayPosition] = *pA;
            arrayPosition++;
        }
        else
        {
            screenArray[arrayPosition] = *pA;
            arrayPosition++;
        }

        if (arrayPosition==11)
        {
            //Run screen saver on monitor
        }
    }

为什么通过新函数在头文件中运行命令,但是从main运行函数?

1 个答案:

答案 0 :(得分:1)

假设“不起作用”意味着“不影响ScreenArray中的MonitorArray”,这是因为getScreen会返回副本数组元素

 ScreenArray MonitorArray::getScreen(int arrayPointer)

虽然新成员函数很可能直接使用数组。

您需要返回指向数组元素的指针:

ScreenArray* MonitorArray::getScreen(int arrayPointer)
{
    if (arrayPointer<0 || arrayPointer>=monitors)
    {
        return NULL;
    }
    else
    {
        return &monitorArray[arrayPointer];
    }
}

(顺便说一句:从boolScreenArray的隐式转换看起来很奇怪。)