tworzenie obiektu klasy o nazwie ze stringa

0

Witam

Jak zrobić coś takiego że tworzę sobie np. klasę samochód, tworzę obiekt np. fiat, ford, etc. i w programie jest opcja dodania obiektu. no i user podaje nazwę np. mercedes i ENTER. I jak zrobić żeby powstał obiekt w danej klasie o nazwie mercedes? Bo chyba trzeba to najpierw spisać do jakiegoś stringa, tak? A potem co?

Jest jakaś funkcja, która tworzy obiekt o nazwie z jakiejś zmiennej (sting)?

0

nazwy są tylko dla wygody programisty,procesor posługuje się adresami danych.Nie możesz w trakcie działania programu definiować nowych zmiennych określonych nazwą,możesz to uczynić jedynie przez tworzenie nowych obiektów w pamięci operatorem new.

Jakimś rozwiązaniem twojego dylematu może być:

class YaClass
{
public:
   string name;
}

i tym name będziesz sobie trzymał te mercedesy itd.

0

Nie utworzysz obiektu o nazwie podanej przez użytkownika. Nazwy obiektów ustalasz TY, możesz sobie zadeklarować tablicę (lub vector) i mieć w klasie składową typu string, która będzie przechowywała informację jaki model samochodu stworzył użytkownik programu np:

#include <iostream>
#include <string>
#include <vector>
using namespace std;

class samochod
{
public:
    string model;
};

int main()
{
    samochod tablica[10];
    cin >> tablica[0].model; // tutaj użytkownik podaje model jaki chce utworzyć

    cout << "\nModel ktory utworzyl uzytkownik to: " << tablica[0].model << endl;

    system("pause");
    return 0;
}
1
std::map<std::string, TwojaKlasaSamochodu> garaz;

garaz["Mercedes"]= TwojaKlasaSamochodu("Mercedes", 233, 12.3);
garaz["Fiat"]= TwojaKlasaSamochodu("Mercedes", 90, 5.3);
...
garaz["Mercedes"].zatankuj();
0
MarekR22 napisał(a)
std::map<std::string, TwojaKlasaSamochodu> garaz;

garaz["Mercedes"]= TwojaKlasaSamochodu("Mercedes", 233, 12.3);
garaz["Fiat"]= TwojaKlasaSamochodu("Mercedes", 90, 5.3);
...
garaz["Mercedes"].zatankuj();

Próbowałem ten sposób ale nie chce działać.

najpierw zrobiłem tak:
std::map<std::string, TwojaKlasaSamochodu> garaz;
garaz["Mercedes"]= TwojaKlasaSamochodu("Mercedes", 233, 12.3);
garaz["Fiat"]= TwojaKlasaSamochodu("Mercedes", 90, 5.3);

nie działało to spróbowałem tak:
std::map<std::string, samochod> garaz;
garaz["Mercedes"];
garaz["Fiat"];

też nie działało.
w tej linii std::map... wywala błędy:
'map' : is not a member of 'std'
syntax error : missing ';' before '<'
missing type specifier - int assumed. Note: C++ does not support default-int

no i przy każdym użyciu garaz wyrzuca
'garaz' : undeclared identifier

Czy żeby to działało trzeba dać jakiegoś #include ? Program robię w Visualu C++ 2008 express.

0

Nie dodałeś prawdopodobnie biblioteki

#include <map>
0

dodałem ale wywala wtedy jeszcze dodatkowo
'#include <map>': skipped when looking for precompiled header use

0

Piszesz w DevC++?

0

nie. W visual c++ 2008 express.

0

'#include <map>': skipped when looking for precompiled header use

masz włączoną opcję „precompiled header”. to dobra rzecz, ale oznacza tyle, że:
· program musi inkludować plik stdafx.h
· swoje include dodawaj do stdafx.h a nie bezpośrednio

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