Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Balabek
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 26
#1

Организация общего класса - C++

12.09.2012, 09:45. Просмотров 378. Ответов 9
Метки нет (Все метки)

Всем, привет!
Я создал класс, который работает прекрасно для одного приложения в котором я его создаю (в Visual C++). Создал Example.h и Example.cpp. Как сделать? чтобы при написании следующего приложения я мог просто включить Example.h и класс заработал?
Проблема в том, что я создал класс в одном приложении и точно такой же в другом. Одно приложение записывает объект класса в файл (напр. example.dat), а второе не может считать этот объект из указанного выше файла.
Заранее благодарю!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2012, 09:45     Организация общего класса
Посмотрите здесь:

Организация класса (lib.so + header.h) - C++
Есть 3 файла: main.cpp header.h lib.so Задача сделать стек используя контейнер\класс. Я остановился на class. Мое...

Сериализация custom обьектов, которые имеют общего родителя и поле другого класса - C++
Подскажите пожалуйста, как мне правильно записать информацию с vector в файл, объектами vector являются кастомные классы - в моем случае...

Организация настроек сложной структуры/класса - C++
Здравствуйте, форумчане!! Возник такой вопрос: что если класс, который я реализую имеет большое колличество вариантов настроек...

Нужен пример неизменяемого класса и класса от которого нельзя наследоваться - C++
Здравствуйте! Нужно привести пример неизменяемого класса и класса от которого нельзя наследоваться.

Деревья общего вида - C++
Дан указатель P1 на корень непустого дерева общего вида. Вывести значения всех вершин дерева в инфиксном порядке: вначале выводится...

Дерево общего вида - C++
Задание: Динамическое дерево произвольной размерности(ссылочная часть узла-список) знаю как обращаться с бинарным деревом, но с...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.09.2012, 09:52     Организация общего класса #2
Добавить эти файлы в новое приложение.
Balabek
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 26
12.09.2012, 09:55  [ТС]     Организация общего класса #3
Цитата Сообщение от David Sylva Посмотреть сообщение
Добавить эти файлы в новое приложение.
Именно эти же файлы через "открыть"? Не создавая новые такие же? Если да то проблемма )) у меня взломанный Visual C++ 6.0 и на "открыть" вылетает.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.09.2012, 09:59     Организация общего класса #4
Я так понял у тебя есть исходные файлы, которые работают корректно и ты хочешь добавить их в другой проект. Правильно?
Balabek
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 26
12.09.2012, 10:06  [ТС]     Организация общего класса #5
Цитата Сообщение от David Sylva Посмотреть сообщение
Я так понял у тебя есть исходные файлы, которые работают корректно и ты хочешь добавить их в другой проект. Правильно?
Да именно так
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.09.2012, 10:10     Организация общего класса #6
В Не знаю как делается в 6 Студии, но у меня в 10, заходишь в обозреватель решений и добавляешь файлы заголовка и исходного файла.
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
12.09.2012, 10:15     Организация общего класса #7
Покажи как класс выглядит и как сохраняешь в файл.
Allaire
0 / 0 / 0
Регистрация: 02.04.2009
Сообщений: 3
13.09.2012, 09:27     Организация общего класса #8
Привет! ну что, получилось?
Balabek
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 26
14.09.2012, 09:44  [ТС]     Организация общего класса #9
Цитата Сообщение от Allaire Посмотреть сообщение
Привет! ну что, получилось?
Нет. Только сегодня разобрался с Visual Studio 2010 и перевел все туда. Не работает а выдает вот такую штуку:
0xC0000005: Нарушение прав доступа при чтении "0x00385bc8".
Необработанное исключение в "0x5d5b7092" в "CarLine_User.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00385bc8".

Добавлено через 2 минуты
Вот мой код: (извиняюсь, не знаю как оформлять код)
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//BusyDriver.h
class BusyDriver
{
public:
    BusyDriver(wchar_t* tmpDriverName=L" ",wchar_t* tmpStatus=L"free",wchar_t* tmpDeparture=L" ",
        wchar_t* tmpPredictionArrival=L" ",wchar_t* tmpDestination=L" ",wchar_t* tmpSenderName=L" ",wchar_t* tmpArrival=L" ");
    ~BusyDriver();
 
    void SetDriverName(wchar_t* tmpDriverName);
    void SetStatus(wchar_t* tmpStatus);
    void SetDeparture(wchar_t* tmpDeparture);
    void SetPredictionArrival(wchar_t* tmpPredictionArrival);
    void SetDestination(wchar_t* tmpDestination);
    void SetSenderName(wchar_t* tmpSenderName);
    void SetArrival(wchar_t* tmpArrival);
 
    wchar_t* GetDriverName();
    wchar_t* GetStatus();
    wchar_t* GetDeparture();
    wchar_t* GetPredictionArrival();
    wchar_t* GetDestination();
    wchar_t* GetSenderName();
    wchar_t* GetArrival();
 
private:
    wchar_t* driverName;
    wchar_t status[10];
    wchar_t departure[8];
    wchar_t predictionArrival[8];
    wchar_t* destination;
    wchar_t* senderName;
    wchar_t arrival[8];
};
 
//BusyDriver.cpp
#include<windows.h>
#include<windowsx.h>
#include"BusyDriver.h"
 
BusyDriver::BusyDriver(wchar_t* tmpDriverName,wchar_t* tmpStatus,wchar_t* tmpDeparture,
        wchar_t* tmpPredictionArrival,wchar_t* tmpDestination,wchar_t* tmpSenderName,wchar_t* tmpArrival)
{
    SetDriverName(tmpDriverName);
    SetStatus(tmpStatus);
    SetDeparture(tmpDeparture);
    SetPredictionArrival(tmpPredictionArrival);
    SetDestination(tmpDestination);
    SetSenderName(tmpSenderName);
    SetArrival(tmpArrival);
}
 
void BusyDriver::SetDriverName(wchar_t* tmpDriverName)
{
    driverName=new wchar_t[strlen((char*)tmpDriverName)+1];
    strcpy((char*)driverName,(char*)tmpDriverName);
 
}
 
void BusyDriver::SetStatus(wchar_t* tmpStatus)
{
    strcpy((char*)status,(char*)tmpStatus);
}
 
void BusyDriver::SetDeparture(wchar_t* tmpDeparture)
{
    strcpy((char*)departure,(char*)tmpDeparture);
}
 
void BusyDriver::SetPredictionArrival(wchar_t* tmpPredictionArrival)
{
    strcpy((char*)predictionArrival,(char*)tmpPredictionArrival);
}
 
void BusyDriver::SetDestination(wchar_t* tmpDestination)
{
    destination=new wchar_t[strlen((char*)tmpDestination)+1];
    strcpy((char*)destination,(char*)tmpDestination);
}
 
void BusyDriver::SetSenderName(wchar_t* tmpSenderName)
{
    senderName=new wchar_t[strlen((char*)tmpSenderName)+1];
    strcpy((char*)senderName,(char*)tmpSenderName);
}
 
void BusyDriver::SetArrival(wchar_t* tmpArrival)
{
    strcpy((char*)arrival,(char*)tmpArrival);
}
 
 
wchar_t* BusyDriver::GetDriverName()
{
    return driverName;
}
 
wchar_t* BusyDriver::GetStatus()
{
    return status;
}
 
wchar_t* BusyDriver::GetDeparture()
{
    return departure;
}
 
wchar_t* BusyDriver::GetPredictionArrival()
{
    return predictionArrival;
}
 
wchar_t* BusyDriver::GetDestination()
{
    return destination;
}
 
wchar_t* BusyDriver::GetSenderName()
{
    return senderName;
}
 
wchar_t* BusyDriver::GetArrival()
{
    return arrival;
}
 
BusyDriver::~BusyDriver(){
    delete [] driverName;
    delete [] destination;
    delete [] senderName;
}
Добавлено через 1 минуту
Записваю объект класса в файд example.dat из консольного приложения. Пытаюсь считать через Windows-приложение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2012, 09:43     Организация общего класса
Еще ссылки по теме:

Составьте программу, выводящую на экран сообщения об отличниках класса, о средней успеваемости учащихся класса - C++
Опишите, используя структуру записи, школьный журнал. Предусмотрите в записи поля для хранения информации о фамилии учащегося, предмете,...

Разное значение переменной класса, в разных экземплярах класса - C++
Вот примерный код: class Test { private: static int countC; static int countD; void initWeight(){ double a; ...

Статическое поле класса, имеющее тип того же класса - C++
Всем доброго времени суток. Как известно, поля класса могут быть ссылками, либо указателями на тот же класс, в котором объявляются, но не...

Вызов функций класса Dictionary функциями дружественного класса - C++
Функции класса Tree используют функции дружественного класса Dictionary,но вылетают ошибки,не находятся определения функций класа...


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

Или воспользуйтесь поиском по форуму:
Balabek
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 26
24.09.2012, 09:43  [ТС]     Организация общего класса #10
Всем, очередной привет!
Как использовать одну реализацию класса, я разобрался )) И сузил неполадки в проем приложении. Ошибка происходит при чтении из файла объекта класса. Т.е. я записываю с помощью WriteFile() объект своего класса в файл, потом считываю из файла с помощью ReadFile. Призавершении программы происходит ошибка. В классе есть элемент-данные, память под которые выделяется из кучи с помощью HeapAlloc() (поменял new и delete на HeapAlloc и HeapFree). Если я уберу из деструктора HeapFree(), то все работает нормально, если оставлю то ошибка доступа.
Кто сможет мне помочь?
Yandex
Объявления
24.09.2012, 09:43     Организация общего класса
Ответ Создать тему
Опции темы

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