Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716

прошу поддержку Классы С++

28.04.2018, 02:38. Показов 3466. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Это мой класс
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
class IntSet
{
private:
    int *SetOfIntegers;
public:
    IntSet();
    ~IntSet();
    void print();
 
};
это файл cpp с описанием

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define size 128
using namespace std;
//конструктор
IntSet::IntSet()
{
    SetOfIntegers = new int [size];
    for (int i = 0; i < size; i++)
    {
        SetOfIntegers[i] = i;
    }
}
//деструктор
IntSet::~IntSet()
{
    delete[]SetOfIntegers;
}
 
void IntSet::print()
{
    for (int i = 0; i < size; i++)
    {
        printf("SetOfIntegers[%d]\n", SetOfIntegers[i]);
    }
}
а это main
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#include "stdafx.h"
#include "my_lab.h"
#include "stdio.h"
#include "stdlib.h"
#include <iostream>
using namespace std;
int main()
{
    IntSet test;
    test.print();
    return 0;
}

я просто хочу проверить как работает конструктор, не компилируется куча ошибок, что не так?

Добавлено через 4 минуты
ошибки вот такие ))))
Ошибка C2760 синтаксическая ошибка: ожидался токен "<Нет данных>", а не "<Нет данных>"
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.04.2018, 02:38
Ответы с готовыми решениями:

Задача на классы! В классах совсем не разбираюсь. Прошу помощи
Выберите 10 произвольных букв русского алфавита (введите с клавиатуры). Введите произвольное русское слово. С помощью ключа длиной от трех...

Прошу объяснить о ссылках,указателях,стрелке -> и двоеточиях :: очень прошу я не понял синтаксис
Здравствуйте! Есть конкретно 4 типа: 1)стрелка (-&gt;) 2)указатели (*) 3)ссылки (&amp;) 4)2е двоеточий (::) а вопрос:что они собой...

Непонятна тема (Классы содержащие другие классы, как данные члены )
Изучаю книгу Джесс Либерти(в частности эту главу в данный момент) #include &lt;iostream&gt; class Point { public: void...

16
1 / 1 / 0
Регистрация: 04.02.2017
Сообщений: 16
28.04.2018, 02:54
Если класс объявлен в отдельном заголовочном файле, то нету его в инклудах в файле с описанием.
А тут нужны std и iostream.h? printf не нуждается, вроде, в них.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
28.04.2018, 02:55
Цитата Сообщение от SadiQ228 Посмотреть сообщение
printf("SetOfIntegers[%d]\n", SetOfIntegers[i]);
Через cout << сделай, зачем здесь Си-шные функции?
0
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716
28.04.2018, 03:08  [ТС]
спасибо за совет, по делу есть что подсказать?
0
1 / 1 / 0
Регистрация: 04.02.2017
Сообщений: 16
28.04.2018, 03:09
В общем.
"main.cpp"
C++
1
2
3
4
5
6
7
8
#include "Headler.h"
 
int main()
{
    IntSet test;
    test.print();
    return 0;
}
"Headler.h"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef HEADLER_H_INCLUDED
#define HEADLER_H_INCLUDED
 
#include <iostream>
#define size 128
 
using namespace std;
 
class IntSet
{
private:
    int *SetOfIntegers;
public:
    IntSet();
    ~IntSet();
    void print();
 
};
 
#endif // HEADLER_H_INCLUDED
"class_define.cpp"
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
#include "Headler.h"
 
 
IntSet::IntSet()
{
    SetOfIntegers = new int [size];
    for (int i = 0; i < size; i++)
    {
        SetOfIntegers[i] = i;
    }
}
 
IntSet::~IntSet()
{
    delete[]SetOfIntegers;
}
 
void IntSet::print()
{
    for (int i = 0; i < size; i++)
    {
        cout<< "SetOfIntegers\n" << SetOfIntegers[i] << endl;
    }
}
0
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716
28.04.2018, 03:10  [ТС]
Цитата Сообщение от Vogl Посмотреть сообщение
Если класс объявлен в отдельном заголовочном файле, то нету его в инклудах в файле с описанием.
А тут нужны std и iostream.h? printf не нуждается, вроде, в них.
да все там с инклудами в порядке просто я не скопировал инклуды. дело явно в чем то другом

потому что вызов обычной функции с выводом сообщения работает
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
28.04.2018, 03:25
Цитата Сообщение от SadiQ228 Посмотреть сообщение
по делу есть что подсказать?
Если по делу, то информации мало. На какую строку кода указывает компилятор? Полный текст ошибки какой?
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
28.04.2018, 04:21
Ваш код компилируется без ошибок (для него кроме <stdio.h> ничего не надо):
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
//#include "stdlib.h"
//#include <iostream>
//using namespace std;
class IntSet
{
private:
    int *SetOfIntegers;
public:
    IntSet();
    ~IntSet();
    void print();
 
};
 
#define size 128
//конструктор
IntSet::IntSet()
{
    SetOfIntegers = new int [size];
    for (int i = 0; i < size; i++)
    {
        SetOfIntegers[i] = i;
    }
}
//деструктор
IntSet::~IntSet()
{
    delete[]SetOfIntegers;
}
 
void IntSet::print()
{
    for (int i = 0; i < size; i++)
    {
        printf("SetOfIntegers[%d]\n", SetOfIntegers[i]);
    }
}
 
int main()
{
    IntSet test;
    test.print();
    return 0;
}
0
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716
29.04.2018, 00:25  [ТС]
а можно ли как то взять имя копии класса для того чтобы видеть какой класс когда был закрыт из деструктора?
типо такого:
C++
1
2
3
4
5
IntSet::~IntSet()
{
    delete[]ArrOfIntegers;
    cout << "CLASS [%NameOfClass%] is CLOSED" << endl;
}
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
29.04.2018, 00:29
Цитата Сообщение от SadiQ228 Посмотреть сообщение
а можно ли как то взять имя копии класса для того чтобы видеть какой класс когда был закрыт из деструктора?
типо такого:
Как с ошибкой дела?
0
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716
29.04.2018, 00:30  [ТС]
не поверите, проснулся утром, ничего не менял, само заработало говорят же кодинг это магия)))
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
29.04.2018, 00:32
Цитата Сообщение от SadiQ228 Посмотреть сообщение
говорят же кодинг это магия)
Кто такую чушь говорит? В программировании, как раз, чудес не бывает.
0
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716
29.04.2018, 00:36  [ТС]
насчет моего последнего вопроса о взятии имени класса, есть мысли?
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,365
29.04.2018, 01:38
Цитата Сообщение от SadiQ228 Посмотреть сообщение
кодинг это магия)))
Магические числа - название алгоритма с непредсказуемым поведением...
У тебя нарушен основной принцип ООП - инкапсуляция.
Что мешает добавить в поля класса имя класса?
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
 
class IntSet {
    
private:
    
    int *SetOfIntegers;
    int size;
    const char * ClassName = "IntSet";
 
public:
    
    IntSet(int size);
    ~IntSet();
    
    void print();
 
};
 
//конструктор
IntSet::IntSet(int _size)
{   printf("Creating\n");
    size = _size;
    SetOfIntegers = new int [size];
    for (int i = 0; i < size; i++)
    {
        SetOfIntegers[i] = i;
    }
}
 
//деструктор
IntSet::~IntSet()
{   printf("Destroying\n");
    delete[]SetOfIntegers;
}
 
void IntSet::print()
{
    for (int i = 0; i < size; i++) {
        printf("SetOfIntegers[%d]\n", SetOfIntegers[i]);
    
    }
}
 
int main()
{
    IntSet test(5);
    test.print();
    return 0;
}
1
1 / 1 / 0
Регистрация: 04.02.2017
Сообщений: 16
29.04.2018, 01:40
Имя класса или объекта?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class CLS
{
public:
        CLS(char[]);
        ~CLS();
private:
        char _name[255];
}
CLS::CLS(char OBJ_name[])
{
        std::memmove(_name, OBJ_name, strlen(OBJ_name));
}
CLS::~CLS()
{
        *Операторы деструктора*
        cout << "Object " << _name << "was destroyed!\n";
}
Может здесь есть ошибка, но суть ясна
1
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716
29.04.2018, 22:03  [ТС]
ребят, упражняюсь по примерам и статьям, видосам на ютубе, пробую добавить элемент в конец массива
компилируется, но выдает ошибку, в чем дело?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
IntSet &IntSet::operator+(int &element)
{
    IntSet rezult;
    rezult = *this;                                  // временная копия
    
    delete[]ArrOfIntegers;                           // освобождаем память
    
    size = size + 1;
    ArrOfIntegers = new int[size];
    for (int i = 0; i < size-1; i++)
    {
        ArrOfIntegers[i] = rezult.ArrOfIntegers[i]; // скопировать массив
    }
    
    ArrOfIntegers[size-1] = element;                // добавляем число в конец массива
    return *this;
}
Миниатюры
прошу поддержку Классы С++  
0
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716
29.04.2018, 23:27  [ТС]
UPD
заработало

надо объявлять так:
C++
1
IntSet &operator+(const int &);
и делать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
IntSet &IntSet::operator+(const int &element)
{
    IntSet rezult = *this;                           // временная копия
 
    delete[]ArrOfIntegers;                           // освобождаем память
 
    size = size + 1;
    ArrOfIntegers = new int[size];
    for (int i = 0; i < size - 1; i++)
    {
        ArrOfIntegers[i] = rezult.ArrOfIntegers[i]; // скопировать массив
    }
 
    ArrOfIntegers[size - 1] = element;                // добавляем число в конец массива
    return *this;
}
Добавлено через 3 минуты
всеравно что что не то

в main вызываю
C++
1
2
3
4
NotEvenNumbers + 111;
    NotEvenNumbers + 222;
    NotEvenNumbers + 333;
    NotEvenNumbers.get();
а на выводе получаю
IN CLASS WITH CONSTRUCTOR
1 3 5 7 9

IN CLASS WITH CONSTRUCTOR COPY
CLASS IS CLOSED
IN CLASS WITH CONSTRUCTOR COPY
CLASS IS CLOSED
IN CLASS WITH CONSTRUCTOR COPY
CLASS IS CLOSED
1 3 5 7 9 -33686019 -572662307 333

CLASS IS CLOSED
Для продолжения нажмите любую клавишу . . .
это еще почему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2018, 23:27
Помогаю со студенческими работами здесь

Программа по классам, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы
Нужно написать программу, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы. Реализовать её нужно в трех...

Я не прошу писать мне код, я прошу подсказать мне, что за структура требуется в задании
Написать программу для работы по запросам оператора с приоритетной очередью запросов. Куча отображается в память двоичным деревом. ...

Как struct Queue и его операции превратить в классы, то есть нужно сделать тоже самое, но через классы
Как struct Queue и его операции превратить в классы, то есть нужно сделать тоже самое, но используя соотвественно классы И как...

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

Добавить поддержку отрицательных чисел
Сделать возможным вывод отрицательных чисел через эту функцию #define pc putchar void lprint(long long int a){ int i=0; char...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru