• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

ustalanie co ma zwracać funkcja

Object Storage Arubacloud
–2 głosów
202 wizyt
pytanie zadane 27 listopada 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)

Chodzi mi o coś takiego jak u vectora 

vector<to co mnie obchodzi> (cos tam)

 

4 odpowiedzi

0 głosów
odpowiedź 27 listopada 2015 przez niezalogowany
o co Ci dokładnie chodzi. Rozwiń swoją myśl.
komentarz 27 listopada 2015 przez Avernis Nałogowiec (27,400 p.)
Nie chcę tworzyć nieskończoność funkcji, które coś zwracają, ale coś takiego, aby się wpisywało jaki to jest typ, int double strig itp. Tak jak w vectorze
0 głosów
odpowiedź 27 listopada 2015 przez niezalogowany

Chodzi ci o to, że chcesz, żeby funkcja zwracała vector? Jak tak, to prosta sprawa, tak samo jak u innych typów:

vector<int> foo(int bar)
{
    vector<int> mojVector;
    mojVector.push_back(bar);
    
    return mojVector;
}

 

komentarz 27 listopada 2015 przez Avernis Nałogowiec (27,400 p.)
nie, chcę aby się manualnie ustalało co zwraca funkcja
komentarz 27 listopada 2015 przez niezalogowany
Czyyyli? :) Że jak chcesz vector typu int, to funkcja ma zwracać vector typu int, a jak chcesz tej samej funkcji użyć do double, to ma zwracać double? Jak tak, to trzeba zrobić szablon funkcji (ciekawostka: vector jest szablonem klasy). Jak nie wiesz czym jest szablon, a bardzo tego potrzebujesz, to chyba mogę ci to zrobić ;)
komentarz 27 listopada 2015 przez adrian17 Ekspert (344,860 p.)
Podczas działania programu? To niemożliwe, z definicji wszystkie typy zmiennych muszą być znane podczas kompilacji.
komentarz 27 listopada 2015 przez niezalogowany
No, w sumie tak, bo jak się zrobi sablon funkcji, to wtedy kompilator sam robi sobie funkcję, ale w czasie kompilacji, nie w czasie działania programu. O ile dobrze pamiętam :)
0 głosów
odpowiedź 27 listopada 2015 przez Benek Szeryf (91,050 p.)
Zainteresuj się szablonami funkcji, bo o to właśnie Ci chodzi.
0 głosów
odpowiedź 27 listopada 2015 przez Radfler VIP (101,030 p.)

Może chodzi Ci o szablony funkcji, tj.:

template<typename Type>
  Type add(Type lhs, Type rhs) {
    return lhs + rhs;
  }

int result = add(34, 54); // Wywołana funkcja: int add(int, int)

Funkcja ustala zwracany typ na podstawie argumentów.

http://en.cppreference.com/w/cpp/language/function_template

http://en.cppreference.com/w/cpp/language/template_argument_deduction

I coś po polsku: http://4programmers.net/C/Szablony_funkcji

komentarz 27 listopada 2015 przez Avernis Nałogowiec (27,400 p.)
wywala mi coś takiego: expected constructor, destructor, or type conversion before ';' token

Robię go w pliku .h
komentarz 27 listopada 2015 przez Radfler VIP (101,030 p.)
Pokaż kod to może pomogę...
komentarz 27 listopada 2015 przez Avernis Nałogowiec (27,400 p.)
class Eny
{
public:
    void walk(Player &player, RenderWindow &window, Time time);
    void enemyAttack(double &playerHP, RectangleShape &shape, double damage);
    void CollisionsGroup();
    template<typename Type>loadFromFile(string way);
};

 

komentarz 27 listopada 2015 przez Radfler VIP (101,030 p.)

A gdzie typ zwracany funkcji?

template<typename Type>
  Type loadFromFile(string path);

// Wywołanie
int value = loadFromFile<int>("input.txt"s);
komentarz 27 listopada 2015 przez Avernis Nałogowiec (27,400 p.)

A jak to wywołać, za pomocą klasy? Bo gdy próbuję to zrobić tak: 

eny.<int>loadFromFile("C:/Game/Player/Player/Saves/hp/hp");

To wyskakują błędy

komentarz 27 listopada 2015 przez Radfler VIP (101,030 p.)

Listę parametrów szablonu wstawiamy między nazwą funkcji i listą parametrów, bez względu czy mamy do czynienia z funkcją składową czy nieskładową.

template<typename Foo>
  Foo bar(int foobar);

// Tak wywołujemy (zawsze)
int value = bar<int>(42);

Podobne pytania

+1 głos
1 odpowiedź 106 wizyt
0 głosów
3 odpowiedzi 160 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...