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

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

28.02.2019, 09:43. Просмотров 249. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2019, 09:43
Ответы с готовыми решениями:

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

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

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

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

5
Комп_Оратор)
Эксперт по математике/физике
8613 / 4330 / 584
Регистрация: 04.12.2011
Сообщений: 12,931
Записей в блоге: 14
28.02.2019, 11:41 2
виртуальным конструктор сделайте:
Цитата Сообщение от Дмитрий962 Посмотреть сообщение
~ClassMain();
Дмитрий962, это не вопрос:
Цитата Сообщение от Дмитрий962 Посмотреть сообщение
И собственно, в чем вопросы
У класса маркер вот такая структура полей
C++
и...?
Нельзя ожидать, что кто-то сделает качественную экспертизу (хотя это и возможно) приличного куска кода. Определитесь и задавайте вопрос по конкретному программному объекту в терминах максимально опредмеченных предоставленным участком (не простынёй) кода.
Так легче и вам и отвечающим. Кроме всего, уже формулируя такие вопросы вы сами найдёте половину ответов.
0
(80 / 20 || 50 / 50) = x
1575 / 1211 / 459
Регистрация: 16.08.2014
Сообщений: 5,080
Записей в блоге: 1
28.02.2019, 12:22 3
Цитата Сообщение от Дмитрий962 Посмотреть сообщение
У класса маркер вот такая структура полей
подумай, может можно или нужно разделить этот класс на два? этот класс по функциональности не слишком сложный? тебе самому комфортно с ним работать? разделяй и властвуй.
0
Комп_Оратор)
Эксперт по математике/физике
8613 / 4330 / 584
Регистрация: 04.12.2011
Сообщений: 12,931
Записей в блоге: 14
28.02.2019, 12:23 4
Цитата Сообщение от IGPIGP Посмотреть сообщение
виртуальным конструктор сделайте:
деструктор конечно
0
Mental handicap
1242 / 620 / 171
Регистрация: 24.11.2015
Сообщений: 2,426
28.02.2019, 12:26 5
Цитата Сообщение от Дмитрий962 Посмотреть сообщение
И собственно, в чем вопросы
У класса маркер вот такая структура полей
Не вижу в конце предложения, знака вопроса "?".

Но я бы начал с изменения названия классов, у вас всего-то два класса, и ниодин из них не делает то что вероятно должен бы был делать исходя из названия. Еще раз, начните с продумки концепции, потом садитесь писать код. Нарисуйте себе отношения классов (UML), нарисуйте себе интефейс вконце концов))
0
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 38
28.02.2019, 12:27  [ТС] 6
сори, багануло чет, тема случайно создалась в процессе написания топика.
Все туда -> Архитектура приложения
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2019, 12:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.