Qt creator i funckje "własne".

0

Chciałbym aby po kliknięciu w button, wewnątrz metody została wykonana funkcja, lecz pojawia się problem bo wywala mi błąd:

D:\projekt\mainwindow.cpp:107: error: a function-definition is not allowed here before '{' token
     {
     ^

A tak wygląda cała funckja i jest zadeklarowana tylko w tej metodzie;

void MainWindow::on_pushButton_3_clicked()
{
    bool scankeys(PBYTE keys, int num=-1)
    {
        if(num>0)
            keys[num]=GetAsyncKeyState(num);
        else
            for(int i=0; i<256; i++) keys[i]=GetAsyncKeyState(i);
        return true;
    }

} 

Error odnosi się do nawiasu otwierajacego funkcje scankeys.

4

Definicji funkcji nie można zagnieżdżać (wyjątkiem są lambdy z C++11):

static bool scankeys(PBYTE keys, int num=-1) {
    if(num>0)
        keys[num]=GetAsyncKeyState(num);
    else
        for(int i=0; i<256; i++) 
            keys[i]=GetAsyncKeyState(i);
    return true;
}

void MainWindow::on_pushButton_3_clicked()
{

}
0

Ok dzięki, działa :D

0

No jeśli już musisz... ;-)

void MainWindow::on_pushButton_3_clicked()
{
    auto scankeys=[](PBYTE keys, int num=-1) -> bool
    {
        if(num>0)
            keys[num]=GetAsyncKeyState(num);
        else
            for(int i=0; i<256; i++) keys[i]=GetAsyncKeyState(i);
        return true;
    };


    ...

    scankeys(keys); 
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1