3 / 3 / 1
Регистрация: 02.12.2016
Сообщений: 142
1

Как объявить имя новой переменной в new

09.05.2017, 19:45. Показов 1114. Ответов 10
Метки c++ (Все метки)

Здравствуйте,
1)Функция должна создавать новый объект структуры :


C++
1
2
3
4
5
 struct Wagen
{
    int weight;;
    char clas;
};
Функция:
C++
1
2
3
4
5
6
7
8
9
10
11
void input(void){
    string name;
    cout << "Введите марку автомобиля\t";
    getline(cin, name);
 
    Wagen *name = new Wagen;
    cout << "Введите вес автомобиля\t";
    cin >> name->weight;
    cout << "Введите класс автомобиля\t";
        cin >> name->class;
}
здесь
C++
1
cin >> name->weight;
выдает ошибку :
выражение должно иметь тип указателя.
Как исправить ситуацию?

2) Если выделять память в методе main(), как нужно объявить динамическое выделение

C++
1
Wagen *name = new Wagen
чтобы имя было видно за методом(в теле функций)?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2017, 19:45
Ответы с готовыми решениями:

Использовать значение строковой переменной как имя новой переменной
Есть некий объект (ob = ) и строка (st =&quot;name&quot;). Так вот нужно, чтобы name стало именем объекта ob....

Как объявить переменную, имя которой находится в другой переменной
В переменной X находится имя другой переменной D. Требуется объявить эту переменную как тип...

Как назначить имя новой переменной в new
Здравствуйте, 1)Функция должна создавать новый объект структуры. struct Wagen { int weight;;...

Присвоить имя переменной такое же как имя файла
x = cell(1,100); %подготовим массив для хранения данных for go = 1:10 %запись ...

10
2756 / 1910 / 569
Регистрация: 05.06.2014
Сообщений: 5,560
09.05.2017, 20:23 2
Цитата Сообщение от MarkSD Посмотреть сообщение
Как исправить ситуацию?
Переименовать переменную. У вас выше уже один name типа string объявлен.
1
3 / 3 / 1
Регистрация: 02.12.2016
Сообщений: 142
09.05.2017, 21:06  [ТС] 3
Так я же хочу сам задавать имя для нового обьекта.
Я понимаю что это указатель на новый обьект.
Как задать новый указатель через функцию?
0
283 / 231 / 114
Регистрация: 07.09.2016
Сообщений: 584
09.05.2017, 21:07 4
странно, что нет ошибки на строке, в которой появляется вторая переменная с уже существующим именем:
Wagen *name = new Wagen;

Добавлено через 1 минуту
в одной области пространства не могут быть две переменные с одинаковыми именами. хотеть вы можете что угодно, но это правило вам не обойти. называйте разные переменные разными именами.
1
2756 / 1910 / 569
Регистрация: 05.06.2014
Сообщений: 5,560
09.05.2017, 21:08 5
Цитата Сообщение от MarkSD Посмотреть сообщение
Так я же хочу сам задавать имя для нового обьекта.
C++
1
2
std::map<std::string,Wagen*> wagenList;
wagenList["Wagen"]=new Wagen;
Не?
1
3 / 3 / 1
Регистрация: 02.12.2016
Сообщений: 142
09.05.2017, 21:13  [ТС] 6
Если я хочу создать новый обьект структуры каждый раз, когда вызывается функция.
Мне же нужно задавать имя.
Например структура - автомобиль.
при вызове функции мне нужно выделить память например для автомобиля bmw. Нужно назвать как то обьект структуры
0
283 / 231 / 114
Регистрация: 07.09.2016
Сообщений: 584
09.05.2017, 21:18 7
возможно вам нужно следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
struct Wagen
{
    std::string name;
    int weight;;
    std::string clas;
};
 
Wagen input(void)
{
    Wagen wagen;
    cout << "Введите марку автомобиля\t";
    getline(cin, wagen.name);
    cout << "Введите вес автомобиля\t";
    cin >> wagen.weight;
    cout << "Введите класс автомобиля\t";
    cin >> name.clas;
    return wagen;
}
 
....
 
 
Wagen w1 = input();
Wagen w2 = input();
...
1
3 / 3 / 1
Регистрация: 02.12.2016
Сообщений: 142
09.05.2017, 21:34  [ТС] 8
Поясните, пожалуйста. Разве не будет каждый раз создаваться один и тот же обьект(wagen) при вызове функции? А вызывая ее, мы будем только менять wagen.name, wagen.weight, name.clas.

При использовании этой функции несколько раз, покажет она нам одну или несколько машин?
0
2756 / 1910 / 569
Регистрация: 05.06.2014
Сообщений: 5,560
09.05.2017, 21:37 9
Цитата Сообщение от MarkSD Посмотреть сообщение
Поясните, пожалуйста. Разве не будет каждый раз создаваться один и тот же обьект(wagen) при вызове функции?
Будет создаваться, копироваться куда указано в 23-24 строчках и разрушаться. Можно и без копирования, но придется изучить тему "конструкторы".
1
3 / 3 / 1
Регистрация: 02.12.2016
Сообщений: 142
09.05.2017, 21:39  [ТС] 10
Вроде знаю что это. Думал без классов обойтись
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
09.05.2017, 21:59 11
Цитата Сообщение от MarkSD Посмотреть сообщение
покажет она нам одну или несколько машин
Внутри функции объект создается локально, после выхода из нее содержимое объекта копируется (к примеру, в те же w1, w2) и этот объект "разрушается". при следующем вызове создастся уже новый объект и история повторится. Т.е. имя - это вроде как метка для текущего объекта, а не что-то глобальное. Даже если в разный функция создать несколько объектов с именем wagen, они не будут указывать на один и тот же объект.

Добавлено через 14 секунд
Цитата Сообщение от MarkSD Посмотреть сообщение
покажет она нам одну или несколько машин
Внутри функции объект создается локально, после выхода из нее содержимое объекта копируется (к примеру, в те же w1, w2) и этот объект "разрушается". при следующем вызове создастся уже новый объект и история повторится. Т.е. имя - это вроде как метка для текущего объекта, а не что-то глобальное. Даже если в разный функция создать несколько объектов с именем wagen, они не будут указывать на один и тот же объект.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2017, 21:59
Помогаю со студенческими работами здесь

Имя переменной как переменная. Как получить доступ к такой переменной?
Подскажите как получать данные из переменной, если ее имя вычисляется? И соответственно как потом...

Как присвоить имя переменной равное аргументу другой переменной?
В общем вопрос такой: Допустим есть переменная string i= &quot;qwer&quot;, хочу создать другую переменную ...

Создание переменной, имя которой включает имя другой переменной
Вот пример кода var y = 1; var x = 'p' + y; eval( 'var' + x + '= 123' );к созданной переменной...

В переменной типа string хранится имя переменной, к которой нужно обратиться. Как это сделать?
Пример: int speed = 10; string s = &quot;speed&quot;; MessageBox.Show(/*как-то обратиться к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru