Qt creator i funckje "własne".

Odpowiedz Nowy wątek
2015-01-02 12:01
aksjio
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.

Pozostało 580 znaków

2015-01-02 12:12
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()
{
 
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22, 2015-01-02 12:13

Pozostało 580 znaków

2015-01-02 12:41
aksjio
0

Ok dzięki, działa :D

Pozostało 580 znaków

2015-01-02 13:47
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); 
}
edytowany 1x, ostatnio: Azarien, 2015-01-02 14:00

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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