Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 31

Почему класс не принимает значение string?

11.06.2016, 17:09. Показов 3460. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Класс не принимает тип string, почему?
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
namespace D
{
    class Pract
    {
    private: 
        string AppName;
        int Apple;
    public:
        Pract(void);    
            void setAppName(string);
            string getAppName();
            void setApple(int);
            int getApple();
        ~Pract(void);
    };
 
}


Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
...
    void Pract::setAppName(string name)
    {
        AppName = name;
    }
 
    string Pract::getAppName()
    {
        return AppName;
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2016, 17:09
Ответы с готовыми решениями:

Почему класс Object принимает все типы?
Здравствуйте, Понимаю что такое класическоле наследование, понимаю откуда у всех обьектов берутся (Equals, GetHashCode, GetType,...

Не могу зарегистрировать класс окна. Не принимает имя класса. Почему?
создал клас окна. WNDCLASSEX wndclass; wndclass.cbSize = sizeof(wndclass); wndclass.style = CS_HREDRAW | CS_VREDRAW; ...

Почему переменная b не принимает значение?
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<math.h> double inline getUravnenie(double a, double b) { if (a !=...

16
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
11.06.2016, 17:16
Цитата Сообщение от Люблмир Посмотреть сообщение
Класс не принимает тип string
что это значит?
0
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 31
11.06.2016, 17:18  [ТС]
Я могу вводить переменную типа int, char в класс, и т.п но класс не даёт возможности ввести в него переменную типа string
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
11.06.2016, 17:22
Цитата Сообщение от Люблмир Посмотреть сообщение
но класс не даёт возможности ввести в него переменную типа string
что значит "не дает"?
0
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 31
11.06.2016, 17:24  [ТС]
Показывает ошибку
Название: Cqvs2z1.png
Просмотров: 90

Размер: 7.2 Кб
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
11.06.2016, 17:29
Цитата Сообщение от Люблмир Посмотреть сообщение
Показывает ошибку
Какую? Текст ошибки?

Кликните здесь для просмотра всего текста
Цитата Сообщение от Ванга
C++
1
2
3
#include <string>
//...
using std::string;
0
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 31
11.06.2016, 17:31  [ТС]
Ошибку в написании текста
string подчёркнут
Если запустить программу:
Кликните здесь для просмотра всего текста

1>c:\users\admin\desktop\consoleapplicat ion1\consoleapplication1\pract.h(7): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "AppName"
1>c:\users\admin\desktop\consoleapplicat ion1\consoleapplication1\pract.h(7): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\admin\desktop\consoleapplicat ion1\consoleapplication1\pract.h(11): error C2061: синтаксическая ошибка: идентификатор "string"
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
11.06.2016, 17:34
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//...
#include <string>
using std::string;
 
namespace D
{
    class Pract
    {
    private: 
        string AppName;
        int Apple;
    public:
        Pract();    
            void setAppName(string);
            string getAppName();
            void setApple(int);
            int getApple();
        ~Pract(void);
    };
 
}
//...
1
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 31
11.06.2016, 17:38  [ТС]
Спасибо большое

Добавлено через 1 минуту
Я пробовал подключить библиотеку <string> но без "using std::string" и программа не работала.
Почему?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
11.06.2016, 17:41
Лучший ответ Сообщение было отмечено Люблмир как решение

Решение

Люблмир, потому что string лежит в пространстве имен std.
т.к. это заголовок, то, я бы рекомендовал убрать этот using,
квалифицировав имена там, где это необходимо (std::string вместо string).
Либо ограничите область действия этого using'а.

На всякий случай: using namespace std
1
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 31
11.06.2016, 17:46  [ТС]
Благодарю
0
 Аватар для meJevin
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
11.06.2016, 17:46
Люблмир, потому что string определен в стандартном пространстве имен (std). И запись using std::string говорит компилятору, чтобы он искал в стандартном пространстве имен string, который ты используешь в своем классе. То же самое у тебя будет происходить с любыми вещами, которые располагаются в стандартном пространстве имен. Скажем, ты хочешь использовать cin / cout из библиотеки iostream. Без префиксного std:: у тебя это сделать не получится, если ты не напишешь перед использованием этих самых cin / cout такие строки: using std::cin; using std::cout.
0
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 31
11.06.2016, 17:48  [ТС]
Последний вопрос:
Почему при вводе строки с помощью cin >> name я получаю нужный результат
А при вводе с помощью std::getline(std::cin, name) программа вылетает показывая ошибку:
Кликните здесь для просмотра всего текста

"ConsoleApplication1.exe" (Win32). Загружено "C:\Users\Admin\Desktop\ConsoleApplicati on1\Debug\ConsoleApplication1.exe". Символы загружены.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\ntdll.dll". Невозможно найти или открыть файл PDB.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\kernel32.dll". Невозможно найти или открыть файл PDB.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\KernelBase.dll" . Невозможно найти или открыть файл PDB.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcp110d.dll". Символы загружены.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcr110d.dll". Символы загружены.
Программа "[2848] ConsoleApplication1.exe" завершилась с кодом 0 (0x0).


C++
1
2
3
4
5
6
7
void InputAName()
{
    cout << "Имя App-a: ";
     string name;
      std::getline(std::cin, name);
       d.setAppName(name);
}
0
 Аватар для meJevin
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
11.06.2016, 17:50
Как сказал Croessmah, можно писать using namespace std;. Таким образом ты вообще про префикс std:: можешь забыть. Но не злоупотребляй этим, это не лучшая практика.

Добавлено через 1 минуту
Люблмир, ты не забыл врубить iostream и string ?
1
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 31
11.06.2016, 17:52  [ТС]
Не забыл, уже исправил ошибку.
C++
1
2
3
4
5
6
7
8
void InputAName()
{
    cout << "Имя App-a: ";
     string name;
      std::getline(std::cin, name);
      std::getline(std::cin, name);
       d.setAppName(name);
}
Уже с таким сталкивался
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
11.06.2016, 17:53
Цитата Сообщение от Люблмир Посмотреть сообщение
программа вылетает показывая ошибку
где здесь ошибка?
Цитата Сообщение от Люблмир Посмотреть сообщение
Программа "[2848] ConsoleApplication1.exe" завершилась с кодом 0 (0x0).
что свидетельствует об успешном выполнении
0
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 31
11.06.2016, 17:59  [ТС]
Помогите пожалуйста ещё с одной ошибкой: тут
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2016, 17:59
Помогаю со студенческими работами здесь

Почему ячейка массива не принимает присваиваемое ей значение?
Привет. Объясните нубу. Почему ячейка массива не принимает присваиваемое ей значение? //отрывок for (int i = 0; i &lt;...

Объяснить почему переменная принимает данное значение
int v = 5; int a = 0; a = ++v + 10 + 1 + ++v * 2; cout &lt;&lt; &quot;a = &quot; &lt;&lt; a &lt;&lt; endl; кто сможет объяснить, почему здесь а = 32 ? :)....

Почему выражение MyWorkbook = Application.ActiveWorkbook.ActiveSheet принимает значение Nothing
Хочу спросить почему выражение типа: Dim MyWorkbook As Worksheet MyWorkbook = Application.ActiveWorkbook.ActiveSheet Принимает...

Функция, которая принимает 2 параметра по ссылке, один на wchar, другой на string. передает значение строки wchar
Здравствуйте, всем. Уже 2 дня пытаюсь изменить найденную функцию. Функция, которая принимает 2 параметра по ссылке, один на...

Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population
Здравствуйте! По C# есть задачка, с которой я так и не разобрался :( Задача: Создайте класс Animal. Добавьте поля string...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru