ALT Opublikowano 26 Czerwca 2012 Udostępnij Opublikowano 26 Czerwca 2012 Pewnie się nie da, ale zżera mnie ciekawość czy za pomocą danej funkcji można zadeklarować zmienną o danej nazwie, czyli coś takiego: jakas_funkcja(nazwa_zmiennej,typ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 26 Czerwca 2012 Udostępnij Opublikowano 26 Czerwca 2012 Nie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 26 Czerwca 2012 Autor Udostępnij Opublikowano 26 Czerwca 2012 Ehh...nie lubię C++ :< Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 26 Czerwca 2012 Udostępnij Opublikowano 26 Czerwca 2012 boś głupi. ale równie dobrze możesz użyć map dynamicznych obiektów i makr, aby załatwić sobie coś takiego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Saus Opublikowano 26 Czerwca 2012 Udostępnij Opublikowano 26 Czerwca 2012 Mozna za pomocą templatów? Nawet cale tablice o typie podanym w argumencie. template <typename T> T f(T a,T b){ return a+b; } To akurat z oficjalnej cplusplus.com, ale rownie dobrze zamiast zwracac a+b mozesz sobie utworzyc zmienna/tablice i ja wywrócić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 28 Czerwca 2012 Udostępnij Opublikowano 28 Czerwca 2012 Z ciekawości. W jakim celu chciałbyś tworzyć zmienne o przypisywanych w trakcie gry nazwach? Przecież w kodzie to i tak wszystko jedno jaką mają nazwę (potem ona znika), a na "zewnątrz" możesz sobie po prostu dodać string to tej zmiennej i wyświetlać ją jako nazwę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Floodnik Opublikowano 28 Czerwca 2012 Udostępnij Opublikowano 28 Czerwca 2012 Ehh...nie lubię C++ :< Na szczęście jest na tyle elastyczne, że rozwiązanie zawsze znajdziesz. a na "zewnątrz" możesz sobie po prostu dodać string to tej zmiennej i wyświetlać ją jako nazwę. To jest myśl. Możesz zrobić sobie dynamiczną tablicę struktur. Struktury te będą się składać ze zmiennej właściwej o typie jaki sobie zażyczysz oraz z napisu który będzie tak jakby nazwą tej zmiennej. Tablica ta będzie opakowana w obiekt narzędziowy, który pozwoli Ci dowolnie zwiększać i zmniejszać wielkość tablicy(poprzez tworzenie nowej o większej/mniejszej wielkości, kopiowanie pamięci i usuwanie starej). I problem rozwiązany. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 28 Czerwca 2012 Udostępnij Opublikowano 28 Czerwca 2012 Czyli coś takiego (mniej więcej): enum eType { tUndefined, tLong, tLonglong, tFloat, tDouble, tLongdouble, tString }; class cCustomVar { private: void* var; string name; eType type; // musisz mieć gdzieś zapisany jaki to typ public: cCustomVar() : var(NULL), name(""), type(tUndefined) {} ~cCustomVar() { if (type != tUndefined) delete var; } bool Init(eType t, string n); bool Release(); }; bool cCustomVar::Init(eType t, string n) { if (type != tUndefined) return false; switch (t) { case tLong: var = new long; break; case tLonglong: var = new long long; break; case tFloat: var = new float; break; case tDouble: var = new double; break; case tLongdouble: var = new long double; break; case tString: var = new string; break; } name = n; return true; } bool cCustomVar::Release() { if (type == tUndefined) return false; delete var; name = ""; type = tUndefined; return true; } I tak dalej. Tylko wciąż się pytam po co? O ile samo stworzenie i kasowanie jest łatwe, to już przekazanie wartości może być trudniejsze (przeciążenie funkcji przypisania dla każdego typu i sprawdzenie jego poprawności z ustalonym). A pobranie? C++ nie wybierze odpowiedniej funkcji według zmiennej wewnątrz klasy. Dużo niepotrzebnej roboty, wokół problemu powstanie taka otoczka kodu, że nie wiem, czy cel i takie rozwiązanie jest tego warte. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Floodnik Opublikowano 29 Czerwca 2012 Udostępnij Opublikowano 29 Czerwca 2012 (przeciążenie funkcji przypisania dla każdego typu i sprawdzenie jego poprawności z ustalonym). A pobranie? C++ nie wybierze odpowiedniej funkcji według zmiennej wewnątrz klasy. 1. Szablony 2. rtti(typeid), potem switch Palnąłem głupotę, przecież dla void* to nie zadziała. Ale wystarczy podczas stworzenia zapisać sobie typ do zmiennej(tak jak u Ciebie - eType), potem użyć instrukcji switch i rzutować to na wskaźnik innego typu. Wtedy już da się skorzystać z RTTI czy innego mechanizmu. Można jeszcze inaczej: oddzielna struktura dla każdego typu(żeby za dużo nie pisać - szablony), chociaż rozwiązanie mało optymalne. po co? Program, który sam się przeprogramowuje? :P (pytanie do obeznanych: czy tak nie działają wirusy polimorficzne?) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się