Tworzenie dynamicznej tablicy za pomocą nazwy podanej przez uzytkownika

0

Witam, chce stworzyc funkcja ktora generuje tablice o nazwie i wielkosci podanej przez uzytkownika. Gdybym przy return uzyl konwersji ze stringa na inta to ma prawo zadzialac ?

int* Zbiory_Liczb::generuj(string nazwa,int n)
{
	int *nazwa = new int[n];
	return nazwa;
}
1

Nie ma prawa. C++ jest językiem kompilowanym.
To oznacza, że tak bezpośrednio się nie da. Musiałbyś zrobić całą klasę, powiedzmy na wzorcu factory, która będzie tworzyć obiekty o "nazwach".

Podobne rzeczy, takie jak chcesz - w sposób bezpośredni, możesz zrobić np w Perlu, czyli języku interpretowanym.

0

Co konkretnie chcesz zrobić i w jakim celu?
Być może źle podchodzisz do problemu.

0

A może chodziło Ci o coś takiego:

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

struct array
{
    size_t count;
    int *data;
    string name;

    array(const string& name, size_t count)
        : count(count), data(new int[count]), name(name) {}

    ~array() { if(data) delete[] data; }
};

int main()
{
    array my_array("my array", 2);
    my_array.data[0] = 15;
    my_array.data[1] = 10;

    cout << "Name: " << my_array.name << "\n";
    for(size_t i=0;i<my_array.count; ++i)
    {
        cout << my_array.data[i] << "\n";
    }

    return 0;
}
0
Kulkenson7 napisał(a):

Witam, chce stworzyc funkcja ktora generuje tablice o nazwie i wielkosci podanej przez uzytkownika. Gdybym przy return uzyl konwersji ze stringa na inta to ma prawo zadzialac ?

int* Zbiory_Liczb::generuj(string nazwa,int n)
{
	int *nazwa = new int[n];
	return nazwa;
}

Ty w ogóle nie wiesz jak pointery działają...
zwraca nazwę... to byś musiał mieć jakiś garbage colletor i tam wyszukiwać po nazwie, a zwalniać po zakończeniu programu.

Zwraca się adres, a nie jakieś nazwy, jak nazwa to liczba, to to bez sensu.

Ale idzie tak zrobić, ale tak nawet newbie nie myśli, bo to jedynie komplikuje sprawę

1
std::map<std::string, std::vector<int> > nazwaneTablice;

nazwaneTablice["kurnik"].resize(23, 0);
nazwaneTablice["stajnia"] = std::vector<int> { 3, 23, 43, 23, -3, 4 }; // C++11

for (auto x : nazwaneTablice["stajnia"])
{
     cout << x << ", ";
}

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