2015-04-09 3 views
-14

Если мое имя класса TEST, я хочу создать объект класса TEST с именем, заданным пользователем во время выполнения? я попытался this-Создание динамического объекта в C++?

#include<iostream> 
#include<string.h> 
#include<conio.h> 
using namespace std; 
class TEST 
{ 
    void end() 
    { 
     cout<<"Hi"; 
    } 
}; 
    int main() 
{ 
    string name; 
    cout<<"Give a object name"; 
    cin>>name;//taking name from user 
    TEST name;//here i am getting error while creating object of TEST class 
    return 0; 
} 
+4

Сообщения об ошибках существуют по причине. – LogicStuff

+0

дайте мне причину и решение этой проблемы –

+0

@AnkitAbhinav Вы не можете использовать символ переменной 'name' дважды в той же области. –

ответ

-1

Это не совсем ясно, что вы пытаетесь сделать здесь, за исключением, возможно обучение основной C++ строит. Вот вам какой-то код.

#include <iostream> 
#include <string> 
#include <map> 

using namespace std; 

class TEST 
{ 
public: 
    //Constructor - sets member string to input 
    TEST(string input) : _name(input) 
    { 
    } 

    //Destructor called when object goes out of scope 
    ~TEST() 
    { 
     cout << "Hi from destructor" << endl; 
    } 

    //Variable stored by the class 
    string _name; 
}; 

int main() 
{ 
    string inputString; 

    cout << "Give a object name"; 
    cin >> inputString; 

    // Give name to your class instance through the constructor 
    TEST foo(inputString); 

    // Store a copy of the object "foo" in a map that can be referenced by name 
    map< string, TEST > userNamedObjects; 
    userNamedObjects.insert({ inputString, foo }); 

    // Access the object's data based on user input name 
    cout << "From map: " << userNamedObjects.at(inputString)._name << endl; 

    // Sanity check 
    cout << foo._name << endl; 

    // Or set it directly 
    foo._name = "Patrick Swayze"; 

    cout << foo._name << endl; 

    // The stored object doesn't change, because it's a copy 
    cout << "From map: " << userNamedObjects.at(inputString)._name << endl; 
    return 0; 
} 
+1

Ваша попытка очень полезна, это помогает много, но на самом деле проблема в том, что я обрабатываю, это имя объекта, которое должно быть дано пользователем. rely большое спасибо за ответ –

+0

@AnkitAbhinav Что относительно использования 'std :: map '? –

+0

Хорошо, я добавил некоторый код, демонстрирующий идею Нейла. Это использует std :: map для хранения объекта со строковым ключом, являющимся именем пользователя. Я обновил все остальное, чтобы он компилировался. : P – DaveyLaser

Смежные вопросы