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

Проблема с классами

26.11.2018, 00:58. Показов 1876. Ответов 19

Студворк — интернет-сервис помощи студентам
Всем привет! Решил вспомнить, некогда изучавшийся, С++ и .... Подскажите

Main.cpp
C++
1
2
3
4
5
6
7
8
////////////////////////////////////////////////////////////
#include "pch.h"
#include "EString.h"
 
int main()
{
}
////////////////////////////////////////////////////////////
EString.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
////////////////////////////////////////////////////////////
#pragma once
#include "pch.h"
#include <string>
#include <stringapiset.h>
#include <wchar.h>
#include <cstring>
 
#define STANDART_COUNT_ELEMENTS 1024
using namespace std;
 
class EString
{
    wchar_t* pData;
    size_t SizeDataMemory;
 
public: //Конструкторы
    EString();
    ~EString();
};
////////////////////////////////////////////////////////////
EString.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
////////////////////////////////////////////////////////////
#include "EString.h"
#include "pch.h"
 
EString::EString()
{
    this->SizeDataMemory = STANDART_COUNT_ELEMENTS;
    this->pData = new wchar_t[STANDART_COUNT_ELEMENTS];
    this->pData[0] = '\0';
}
EString::~EString()
{
    delete this->pData;
}
////////////////////////////////////////////////////////////
Вот! Всего лишь двадцать строк, а ошибок масса....В чем проблема?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.11.2018, 00:58
Ответы с готовыми решениями:

Проблема с классами
У меня возникла проблема с недопониманием классов в С++ помогите пожалуйста !!! в icq 437551173 ;)

Проблема с Классами
// VectorClass.cpp : main project file. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace System; using...

Небольшая проблема с классами
Всем привет. Дано задание: Расширить иерархию классов с использованием виртуального абстактного класса в качестве основы иерархии. ...

19
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
26.11.2018, 05:34
а сами ошибки где?
0
1 / 1 / 1
Регистрация: 25.11.2018
Сообщений: 91
26.11.2018, 10:12  [ТС]
Вот скрин всех ошибок - Вложение 986222.

В общем не хочет видеть компилятор мой хидер-файл с дефайнами о обьявлениями, почему-то....

Мелкие пишут: https://docs.microsoft.com/ru-... ew=vs-2017 Пробовал завернуть класс в пространство - толку 0, но на это и не рассчитывалось, т.к. не видит не только класс но и макрос. Все четенько, как в учебниках, а не работает...
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
26.11.2018, 10:21
PEvgen, попробуйте все в main.cpp запихать.
#pragma once поддерживается?
0
106 / 93 / 44
Регистрация: 26.07.2015
Сообщений: 197
26.11.2018, 10:24
PEvgen, ссылка на вложение битая.

Если выделяешь память с помощью
C++
1
this->pData = new wchar_t[STANDART_COUNT_ELEMENTS];
то и освобождать надо
C++
1
delete[] this->pData;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33187 / 21484 / 8232
Регистрация: 22.10.2011
Сообщений: 36,862
Записей в блоге: 12
26.11.2018, 10:25
Цитата Сообщение от PEvgen Посмотреть сообщение
Вот скрин всех ошибок
Нет тут никакого скрина.
0
1 / 1 / 1
Регистрация: 25.11.2018
Сообщений: 91
26.11.2018, 10:44  [ТС]
Перезалью скрин
Ссылка, не битая...не надо
0
1 / 1 / 1
Регистрация: 25.11.2018
Сообщений: 91
26.11.2018, 10:51  [ТС]
Цитата Сообщение от n1b1ru Посмотреть сообщение
PEvgen, попробуйте все в main.cpp запихать.
#pragma once поддерживается?
При переносе всего в мейн
0
1 / 1 / 1
Регистрация: 25.11.2018
Сообщений: 91
26.11.2018, 10:55  [ТС]
Цитата Сообщение от Si14 Посмотреть сообщение
PEvgen, ссылка на вложение битая.

Если выделяешь память с помощью
C++
1
this->pData = new wchar_t[STANDART_COUNT_ELEMENTS];
то и освобождать надо
C++
1
delete[] this->pData;
Ну на это вроде не ругается...
И в предыдущих приложениях вроде работало и без "[]"..)
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
26.11.2018, 11:01
PEvgen, у меня в main скомпилировалось.
Точно не указан хедер в main:
C++
1
#include "EString.h"
А про delete правильно сказали, компилятор и не будет ругаться
0
1 / 1 / 1
Регистрация: 25.11.2018
Сообщений: 91
26.11.2018, 11:17  [ТС]
Цитата Сообщение от n1b1ru Посмотреть сообщение
PEvgen, у меня в main скомпилировалось.
Точно не указан хедер в main:
C++
1
#include "EString.h"
А про delete правильно сказали, компилятор и не будет ругаться
Точно, забыл удалить....собрало...
Так а как что-бы нормально?

А про делит, он вроде не только не ругается, но и работает), но на всякий случай поменяю.
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
26.11.2018, 11:25
PEvgen, проверить названия файлов EString.h, EString.cpp. Учитывать прописные буквы.
Проверить находятся EString.h, EString.cpp в папке с main.cpp (не знаю как там в visual)
0
1 / 1 / 1
Регистрация: 25.11.2018
Сообщений: 91
26.11.2018, 11:30  [ТС]
P.S. некорректно освобождает, наверное, без, я так понимаю - разыменования, если вообще что-то удаляет...

Добавлено через 59 секунд
Цитата Сообщение от n1b1ru Посмотреть сообщение
PEvgen, проверить названия файлов EString.h, EString.cpp. Учитывать прописные буквы.
Проверить находятся EString.h, EString.cpp в папке с main.cpp (не знаю как там в visual)
Конечно в одной, это же свежее все...МЫ2017 не настолько убога чтобы делать подобное, хоть ее многие не любят...
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
26.11.2018, 11:30
Цитата Сообщение от PEvgen Посмотреть сообщение
P.S. некорректно освобождает, наверное, без, я так понимаю - разыменования, если вообще что-то удаляет...
Если используется операция new [], то нужно применять delete []
0
1 / 1 / 1
Регистрация: 25.11.2018
Сообщений: 91
26.11.2018, 11:35  [ТС]
Да понял, понял..) Память это святое и за ней следить надо правильно!

Мне бы с реализацией класса разобраться..)
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
26.11.2018, 11:48
PEvgen, если не видит значит либо неправильное название, либо не там находится где надо.
#pragma once точно поддерживается (хоть я и ошибку не увидел)? #ifndef для теста
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
26.11.2018, 12:38
Лучший ответ Сообщение было отмечено PEvgen как решение

Решение

Цитата Сообщение от PEvgen Посмотреть сообщение
Мне бы с реализацией класса разобраться
Не вижу проблем в реализации класса. А с ошибками лучше разбираться по порядку. И первая из них - это неопределенный идентификатор PCONTEXT в файле minwinbase.h, который создавался и подключался не вами. Из всех подключенных заголовков незнакомым для меня является <stringapiset.h>, его и пробую отключить, т.к. с остальными ранее таких проблем не было. В результате программа собирается. Не зная тонкостей работы со <stringapiset.h>, ничего более сказать не могу. Он точно нужен?
1
1 / 1 / 1
Регистрация: 25.11.2018
Сообщений: 91
26.11.2018, 13:09  [ТС]
Цитата Сообщение от valen10 Посмотреть сообщение
Не вижу проблем в реализации класса. А с ошибками лучше разбираться по порядку. И первая из них - это неопределенный идентификатор PCONTEXT в файле minwinbase.h, который создавался и подключался не вами. Из всех подключенных заголовков незнакомым для меня является <stringapiset.h>, его и пробую отключить, т.к. с остальными ранее таких проблем не было. В результате программа собирается. Не зная тонкостей работы со <stringapiset.h>, ничего более сказать не могу. Он точно нужен?
Заменив на Windows.h проблемы с описанием и реализацией в Мэйне исчезли.(Мне он нужен был для MultiByteToWideChar, а MSDN ссылается на него)
При разнесении по своим файлам не видит ни класс, ни, если обернуть его в пространство, пространство.
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
26.11.2018, 13:20
Цитата Сообщение от PEvgen Посмотреть сообщение
При разнесении по своим файлам не видит ни класс
У вас всего 2 файла для класса будет.

EString.h содержит объявление класса и подключение необходимых заголовков.
EString.cpp содержит описание класса и строку #include "EString.h", другие подключаемые заголовки - по необходимости.

Для использования вашего класса в main.cpp, необходимо подключить заголовочный файл, строка #include "EString.h". Этого достаточно.

Для проверки взял ваш код из поста #1, убрал <stringapiset.h>, и все собирается, объекты класса EString в main() создаются.
0
1 / 1 / 1
Регистрация: 25.11.2018
Сообщений: 91
26.11.2018, 13:45  [ТС]
Цитата Сообщение от valen10 Посмотреть сообщение
У вас всего 2 файла для класса будет.

EString.h содержит объявление класса и подключение необходимых заголовков.
EString.cpp содержит описание класса и строку #include "EString.h", другие подключаемые заголовки - по необходимости.

Для использования вашего класса в main.cpp, необходимо подключить заголовочный файл, строка #include "EString.h". Этого достаточно.

Для проверки взял ваш код из поста #1, убрал <stringapiset.h>, и все собирается, объекты класса EString в main() создаются.
Наверное это глюк студии какой-то, только что создал новый проект, с тест классом - вроде бы все видит по своим файлам...

Спасибо, за выявленную ошибку!

Добавлено через 15 минут
P.S. Я, вроде бы, не шизофреник, но ощущение, что мелкие "помогают" в написании программ не хочет покидать мою голову... Постоянные подвисания и непонятные ситуации...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.11.2018, 13:45
Помогаю со студенческими работами здесь

Проблема с абстрактными классами и перегрузкой операторов
добрый день. в общем ситуация такая: есть несколько классов, наследуемых от абстрактного класса. Нужно реализовать чтобы можно было...

Работа с классами
Программа работает некорректно... не выводит студентов введенных с клавиатуры.... :( выводит только и сравнивает только этих: ...

Работа с классами
Задача:найти сумму всех отрицательных элементов матрицы и записать в вектор. For (i=0;i&lt;=N;i++) for (j=0;j&lt;=M;j++) if (a&lt;0) ...

работа с классами в С++
Пусть есть class.срр, в котором описан класс MyClass{ public: int i; ... } Есть файл main.cpp, в нем я использую...

Работа с классами.
Или это задача такая лёгкая (на экзамене будет), или я чего-то не понимаю. В классе Pair может содержаться только 2 числа (ну и 2 метода не...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru