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

Prosba o poprawe kodu i zrozumienie zaleznosci

0 głosów
599 wizyt
pytanie zadane 5 października 2015 w C i C++ przez 0xf Dyskutant (8,180 p.)

Oto kod :

#include <iostream>

using namespace std;

void generator_tablic();//Funkcja tworzaca tablice dynamiczne na rzecz metod w klasach, lepiej uzyc funkcji niz rozbudowywac metode


template<class typ=string>
typ* dajTablice(int wielkosc)
{
    typ* tablica = new typ[wielkosc];
    return tablica;
}



void generator_tablic(int wy, int wi, string na)
{
int wymiary=wy;
int *wielkosci=new int [wymiary];
string nazwa=na;





}


int main()
{

cout<<"Czesc !"<<endl;

return 0;

}

error :default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11

 

 

Dobra co chce zeby kod robil chcialbym za pomoca funkcji generowac tablice oczywiscie z poziomu kodu, chce sobie ulatwic dalsza prace jestem przy duzym projekcie i obecnie tworze sobie jakby funkcje ktore to przyspiesza.

Chcialbym zeby to wygladalo tak MojaFunkcja(wymiary=2,wielkosci={3,6}, nazwa=Indeksy, typ=double);

O cos takiego mi chodzi problemem jest ta deklaracja typu a i widzialem ze bledem jest to ze bez tego c++11 nie moga byc uzyte domyslne argumenty tej funkcji jestem na linuxie i mam pytanie jak to doinstalowac probowalem wpisac w terminala nazwe i nie wiem co i jak myslalem nad xupdate g++ ale nic.

Pozdrawiam

2 odpowiedzi

0 głosów
odpowiedź 5 października 2015 przez criss Mędrzec (172,570 p.)

Argumenty template-a*
Wejdź w opcje kompilatora i znajdź checkboxa "Have G++ follow the C++11 ISO ..." lub podobne.
Ew. np. w Dev-Cpp, też w opcjach kompilatora, do pola z komendami kompilatora dopisz -std=c++11.
Nie wiem na czym pracujesz, ale teraz powinieneś sobie poradzić.

komentarz 5 października 2015 przez 0xf Dyskutant (8,180 p.)
Doskonale teraz dziala, dzieki :D a mam pytanie ta funkcje ktora napisalem na koncu tzn. w jaki sposob chcialbym jej uzywac to ten kod jest prawidlowy czy nie do konca ?
komentarz 5 października 2015 przez criss Mędrzec (172,570 p.)

dajTablice() tak.
Ale generator_tablic - zupełnie nie rozumiem co tam się dzieje. Powoduje wyciek pamięci (alokujesz pamięć i gubisz na nią wskaźnik), argument wi jest w ogóle nie używany, ten string też nie wiem po co :P To się tu znalazło przypadkiem?

0 głosów
odpowiedź 5 października 2015 przez Radfler VIP (101,030 p.)

Spróbuję pomóc:

1. Musisz kompilować z flagą -std=c++11 (albo -std=gnu++11, albo nawet 14), powinno działać.

2. Takiej funkcji:

MojaFunkcja(wymiary=2,wielkosci={3,6}, nazwa=Indeksy, typ=double);

W C++ nie stworzysz, chyba że użyjesz makra (czego nie polecam). Bardziej coś takiego:

MojaFunkcja<wymiary = 2, type = double>(wielkosci = {3, 6}, nazwa = Indeksy);

Stworzenie takiej funkcji byłoby trochę (jak dla mnie) czasochłonne, więc nie potrzebnie się w coś takiego bawisz ;)

komentarz 5 października 2015 przez 0xf Dyskutant (8,180 p.)
Czym sa makra, a czy C# ma takie mozliwosci ?. Nie jestem jakims orlem z c++ ucze sie dopiero pol roku z czego 2 miesiace uczylem sie petli ale wynikalo to z braku motywacji. Ogarniam obiektowke i takie wazniejsze rzeczy . Wiec spytam wprost dlaczego niewarto sie w to bawic ja z doswiadczenia wiem ze jezeli uzywam pamieci dynamicznej w metodach klasy to wywala mi przestrzenie std poprostu pamiec idzie sie "kochac" wiec moze dzieki takiej funkcji rozwiaze problem i pozatym przy tym projekcie mam cala biblioteke takich funkcji do napisania moznaby powiedziec ze szybciej mi zejdzie napisac malego frameworka nizeli swoj projekt bez takowego cudenka.
komentarz 5 października 2015 przez Radfler VIP (101,030 p.)
Czym są makra: http://en.cppreference.com/w/cpp/preprocessor/replace

A dlaczego nie warto się w to bawić?

Noo, implementacja takiej funkcji byłaby spora (jak dla mnie bardzo). Swoją drogą zaciekawił mnie Twój pomysł i zabrałem się za pisanie tej funkcji ;)
komentarz 5 października 2015 przez 0xf Dyskutant (8,180 p.)
Fajnie sie to pisze glowkuje nad tym naprawde przyjemnie sie robi szczegolnie kiedy sie zastanawiasz jakby tutaj podac wielkosc tablicy, czesto sie zapominam ze to funkcja dla mnie czyli kodera ma mi ulatwic a nie funkcja niezbedna do wykonania programu.
komentarz 5 października 2015 przez Radfler VIP (101,030 p.)
Cóż, ja już napisałem tę funkcję: http://pastebin.com/s3NWhKYs

I nie mów mi, że to nie jest skomplikowane!

Pozostaje jeszcze do napisania funkcja zwalniająca...

Podobne pytania

+8 głosów
1 odpowiedź 1,152 wizyt
pytanie zadane 1 listopada 2016 w Nasze poradniki przez niezalogowany
0 głosów
2 odpowiedzi 494 wizyt
pytanie zadane 14 października 2015 w C i C++ przez 0xf Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 533 wizyt
pytanie zadane 30 września 2015 w C i C++ przez broda Początkujący (380 p.)

93,772 zapytań

142,730 odpowiedzi

323,382 komentarzy

63,369 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...