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

Классы, поля, методы

28.02.2019, 09:43. Показов 576. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день господа. Хотелось бы услышать мнение и советы более опытных людей. Пишу приложение для дипломной, но в силу неопытности возникает много вопросов. Кратко опишу суть приложения: приложение дополненной реальности, юзер считывает маркер наклеенный на объекте(любое возможное устройство, но в первую очередь станки т.к. специальность автоматизация машиностроения) при помощи камеры мобильного устройства, в свою очередь ему выводятся текстовые метки, указывающие наименование составных частей(в дальнейшем будет реализованы визуальные справки по эксплуатации устройств);

Приведу сразу код программы.
ClassMain.h
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once
#include <string>
class ClassMain
{
protected:
    int id;
    std::string name;
public:
    void GetId(int &id);
    std::string GetName();
    void SetName(std::string name);
    virtual void WriteToFile(std::string path) = 0;
    virtual void ReadFromFile(std::string path) = 0;
public:
    ClassMain(int id, std::string name);
    ~ClassMain();
};


ClassMain.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
25
26
27
28
#include "pch.h"
#include "ClassMain.h"
#include <string>
 
std::string ClassMain::GetName() {
    return this->name;
 
}
 
void ClassMain::SetName(std::string name) {
    this->name = name;
 
}
 
void ClassMain::GetId(int &id) {
    id = this->id;
}
 
 
ClassMain::ClassMain(int id, std::string name)
{
    this->id = id;
    this->name = name;
}
 
ClassMain::~ClassMain()
{
}


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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once
#include "ClassMain.h"
#include <string>
class ClassMarker :
    public ClassMain
{
private:
    int id;
    std::string name;
    int visible;
    int collide;
    double  marker_coord[4][2];
    double  trans[3][4];
    double  marker_width;
    double  marker_center[2];
public:
    ClassMarker(int id, std::string name, int visible, int collide, double **marker_coord, int marker_coordx, int marker_coordy,
        double **trans, int transx, int transy, double marker_width, double *marker_center, int marker_centerx);
    void WriteToFile(std::string path) override;
    void ReadFromFile(std::string path) override;
    ~ClassMarker();
};


ClassMarker.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
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
51
52
53
54
55
56
#include "pch.h"
#include "ClassMarker.h"
#include <fstream>
#include <string>
 
 
ClassMarker::ClassMarker(int id, std::string name, int visible, int collide, double **marker_coord, int marker_coordx, int marker_coordy,
    double **trans, int transx, int transy, double marker_width, double *marker_center, int marker_centerx) : ClassMain(id, name)
{
    this->id = id;
    this->name = name;
    this->visible = visible;
    this->collide = collide;
    for (int i = 0; i < marker_coordx; i++) {
        for (int j = 0; j < marker_coordy; j++)
            this->marker_coord[i][j] = marker_coord[i][j];
    }
 
    for (int i = 0; i < transx; i++) {
        for (int j = 0; j < transy; j++)
            this->marker_coord[i][j] = trans[i][j];
    }
 
    this->marker_width = marker_width;
 
    for (int i = 0; i < marker_coordx; i++) {
        this->marker_center[i] = *marker_center++;
    }
 
 
}
 
void ClassMarker::WriteToFile(std::string path) {
    std::fstream file(path);
    file.open(path, std::fstream::in);
    if (!file.is_open()) {
        throw "file not open";
    }
 
    file.write((char*), sizeof(this));
    file.close();
}
 
void ClassMarker::ReadFromFile(std::string path) {
    std::fstream file("path");
    file.open(path, std::fstream::in);
    if (!file.is_open()) {
        throw "file not open";
    }
 
    file.close();
}
 
ClassMarker::~ClassMarker()
{
}


testApp.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
25
26
27
28
29
30
31
32
#include "pch.h"
#include <iostream>
#include "ClassMarker.h"
#include "MarkerData.h"
#include <string>
 
std::string         markerdata = "Debug\\Data\\markerdata";
int             objectnum;
 
int main()
{
    setlocale(LC_ALL, "rus");
    double** arr = new double*[4];
    for (int i = 0; i < 4; i++)
        arr[i] = new double[2];
    double** arr1 = new double*[3];
    for (int i = 0; i < 3; i++)
        arr1[i] = new double[4];
 
    double arr2[2];
 
    ClassMarker marker(1, "123", 1, 1, arr, 4, 2, arr1, 3, 4, 2.0, arr2, 2);
 
    delete [] *arr;
    delete [] *arr1;
 
    marker.WriteToFile(markerdata);
 
 
    system("pause");
 
}


И собственно, в чем вопросы
У класса маркер вот такая структура полей
C++
1
2
3
4
5
6
7
8
    char       name[256];
    int        id;
    int        visible;
int        collide;
    double     marker_coord[4][2];
    double     trans[3][4];
    double     marker_width;
    double     marker_center[2];
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.02.2019, 09:43
Ответы с готовыми решениями:

Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get (…), show (…). Определить другие методы
Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get (…), show (…). Определить другие методы Abiturient:...

классы/дочерние классы/методы
помогите пожалуйста! надо что выводились только учебеники. чтоб былo через GetTip. h файл class Book { protected: char...

Методы и классы
добрый день) код выдает ошибку &quot;E2089 Identifier 'proc' cannot have a type qualifier&quot;. не могу понять в чем проблема. int main() { ...

5
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
28.02.2019, 11:41
виртуальным конструктор сделайте:
Цитата Сообщение от Дмитрий962 Посмотреть сообщение
~ClassMain();
Дмитрий962, это не вопрос:
Цитата Сообщение от Дмитрий962 Посмотреть сообщение
И собственно, в чем вопросы
У класса маркер вот такая структура полей
C++
и...?
Нельзя ожидать, что кто-то сделает качественную экспертизу (хотя это и возможно) приличного куска кода. Определитесь и задавайте вопрос по конкретному программному объекту в терминах максимально опредмеченных предоставленным участком (не простынёй) кода.
Так легче и вам и отвечающим. Кроме всего, уже формулируя такие вопросы вы сами найдёте половину ответов.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.02.2019, 12:22
Цитата Сообщение от Дмитрий962 Посмотреть сообщение
У класса маркер вот такая структура полей
подумай, может можно или нужно разделить этот класс на два? этот класс по функциональности не слишком сложный? тебе самому комфортно с ним работать? разделяй и властвуй.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
28.02.2019, 12:23
Цитата Сообщение от IGPIGP Посмотреть сообщение
виртуальным конструктор сделайте:
деструктор конечно
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
28.02.2019, 12:26
Цитата Сообщение от Дмитрий962 Посмотреть сообщение
И собственно, в чем вопросы
У класса маркер вот такая структура полей
Не вижу в конце предложения, знака вопроса "?".

Но я бы начал с изменения названия классов, у вас всего-то два класса, и ниодин из них не делает то что вероятно должен бы был делать исходя из названия. Еще раз, начните с продумки концепции, потом садитесь писать код. Нарисуйте себе отношения классов (UML), нарисуйте себе интефейс вконце концов))
0
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 38
28.02.2019, 12:27  [ТС]
сори, багануло чет, тема случайно создалась в процессе написания топика.
Все туда -> Архитектура приложения
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.02.2019, 12:27
Помогаю со студенческими работами здесь

Классы. Объекты. Методы
Доброго времени суток! Вот задачка. Я пока начинающий в этом деле, так что не очень понятно... Создать класс &quot;дата&quot;. Данные...

Классы и методы, перегрузка операторов == и !=
не могу разобраться с перегрузкой операторов == или != для 2 массивов типа char и int состоящих из 5 элементов. при составлении кода...

Зачем нужны абстрактные классы и методы?
Можете объяснить в чём смысл абстрактного класса? Ведь с тем же успехом я могу написать: class Test { public: void...

Классы, функции методы класса, наследование
Задание: Объявите класс Tarray, создающий тип &quot;Массив&quot;. Определите элементы-данные класса: - Указатель на область памяти,в которой...

Классы, конструкторы, деструкторы, методы классов
Доброго времени суток , Господа программисты. :) Очень нужна Ваша помощь. Написал программу, но никак не получается сделать последний...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru