Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Terminal, map, funkje

Ostatnio zmodyfikowano 2016-11-17 17:30
Autor Wiadomość
michal11
» 2016-11-17 13:38:27
Odniosę się do twojego pierwszego posta.

Masz funkcje które zadeklarowałeś, że zwracają inta ale jednak nigdzie tam nie dałeś returna, moim zdaniem to się nie powinno skompilować albo przynajmniej powinien być warning ale w tym wypadku prawdopodobnie z funkcji są zwracane jakieś śmieci. Z tego co zrozumiałem chcesz sobie zbindowac funkcję do klucza w mapie i w odpowiednim momencie ją wywołać tak? Opisz dokładnie problem i flow jaki chcesz żeby twój program miał.

A niżej masz przykład jak mi się wydaje co chcesz osiągnąć:
C/C++
#include <iostream>
#include <string>
#include <functional>
#include <map>

//====================================================================================================================

int nd()
{
    std::cout << "niedziela :D|||";
    return 7;
}
int pon()
{
    std::cout << "poniedzialek :P|||";
    return 1;
}
int wt()
{
    std::cout << "wtorek :C|||";
    return 2;
}

//====================================================================================================================

int main()
{
    std::string x;
    std::map < std::string, std::function < int() >> komenda;
    komenda[ "nd" ] = nd;
    komenda[ "pon" ] = pon;
    komenda[ "wt" ] = wt;
   
    std::cout << "Wpisz komende: ";
    std::cin >> x;
   
    std::cout << komenda[ x ]();
   
    return 0;
}

@karambaHZP
Zapisujesz adres funkcji w mapie, a jest to liczba.
nie żaden adres funkcji tylko śmieci bo brakuje return.
P-153835
karambaHZP
» 2016-11-17 13:51:54
nie żaden adres funkcji tylko śmieci bo brakuje return.
Nie zwróciłem uwagi na ten nawiasy. Brawo za czujne oko.
P-153837
Wasyl
Temat założony przez niniejszego użytkownika
» 2016-11-17 16:30:22
C/C++
#include <iostream>
#include <string>
#include <functional>
#include <map>

using namespace std;

//====================================================================================================================

int nd()
{
    cout << "niedziela :D|||";
    return 7;
}
int pon()
{
    cout << "poniedzialek :P|||";
    return 1;
}
int wt()
{
    cout << "wtorek :C|||";
    return 2;
}

//====================================================================================================================

int main()
{
    string x;
    map < string, function < int() >> komenda;
    komenda[ "nd" ] = nd;
    komenda[ "pon" ] = pon;
    komenda[ "wt" ] = wt;
   
    cout << "Wpisz komende: ";
    cin >> x;
   
    cout << komenda[ x ]();
   
    return 0;
}

błąd:


||=== Build: Debug in test (compiler: GNU GCC Compiler) ===|
C:\Users\Wasyl\Desktop\test\main.cpp||In function 'int main()':|
C:\Users\Wasyl\Desktop\test\main.cpp|31|error: 'function' was not declared in this scope|
C:\Users\Wasyl\Desktop\test\main.cpp|31|error: 'komenda' was not declared in this scope|
C:\Users\Wasyl\Desktop\test\main.cpp|31|error: template argument 2 is invalid|
C:\Users\Wasyl\Desktop\test\main.cpp|31|error: template argument 4 is invalid|
||=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

i co z tym ? :(

//ogólnie to zaczynałem caly temat od tego posta: http://cpp0x.pl/forum/temat/​?id=23944 i mi polecili "mapowanie"... i dlatego założyłem ten post by dowiedziec sie wiecej na ten temat i z potrzeby pomocy, ogólne założenie tego "projektu" jest opisane w w/w poście :)
(dla leniwych.. ma to byc konsola na wzór "cmd", konsoli z CS:GO tylko że z moimi komendami :) )
P-153841
michal11
» 2016-11-17 16:42:39
To nie jest dokładnie mój kod, brakuje wszędzie
std::
.
P-153842
Wasyl
Temat założony przez niniejszego użytkownika
» 2016-11-17 16:49:45
wiem, takie przyzwyczajenie ze juz nie pisze std bo denerwuje....
mnijesza o to , na code block 16 nie dzila ani std ani bez std...
bład ten sam co podałem :(
P-153844
mateczek
» 2016-11-17 17:18:22
słowa kluczowe to: c++11, enable, codeblocks.
P-153845
Wasyl
Temat założony przez niniejszego użytkownika
» 2016-11-17 17:30:26
Dziekuję że tyle ze mna wytrwaliście, działa znakomicie. Naprawde dzieki :)

+rep za rozwaizanie :)
P-153846
1 « 2 »
Poprzednia strona Strona 2 z 2