Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

Нахождение наибольшего общего делителя и наименьшего общего кратного двух натуральных - C++
Составить программу для нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел (НОК(А,В)= А*В/ НОД...

Составить программу для нахождения наибольшего и наименьшего общего делителя и наименьшего общего кратного двух натуральных чисел - C++
Составить программу для нахождения наибольшего и наименьшего общего делителя и наименьшего общего кратного двух натуральных чисел по...

Как обраиться к функции класса через другую функцию класса (друга)? - C++
Пример кода: #include <iostream> using namespace std; class Sasha; class Petya { public: friend class Sasha; ...

9
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.09.2012, 09:52 #2
Добавить эти файлы в новое приложение.
0
Balabek
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 26
12.09.2012, 09:55  [ТС] #3
Цитата Сообщение от David Sylva Посмотреть сообщение
Добавить эти файлы в новое приложение.
Именно эти же файлы через "открыть"? Не создавая новые такие же? Если да то проблемма )) у меня взломанный Visual C++ 6.0 и на "открыть" вылетает.
0
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.09.2012, 09:59 #4
Я так понял у тебя есть исходные файлы, которые работают корректно и ты хочешь добавить их в другой проект. Правильно?
0
Balabek
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 26
12.09.2012, 10:06  [ТС] #5
Цитата Сообщение от David Sylva Посмотреть сообщение
Я так понял у тебя есть исходные файлы, которые работают корректно и ты хочешь добавить их в другой проект. Правильно?
Да именно так
0
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.09.2012, 10:10 #6
В Не знаю как делается в 6 Студии, но у меня в 10, заходишь в обозреватель решений и добавляешь файлы заголовка и исходного файла.
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
12.09.2012, 10:15 #7
Покажи как класс выглядит и как сохраняешь в файл.
0
Allaire
0 / 0 / 0
Регистрация: 02.04.2009
Сообщений: 3
13.09.2012, 09:27 #8
Привет! ну что, получилось?
0
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-приложение.
0
Balabek
0 / 0 / 0
Регистрация: 19.07.2012
Сообщений: 26
24.09.2012, 09:43  [ТС] #10
Всем, очередной привет!
Как использовать одну реализацию класса, я разобрался )) И сузил неполадки в проем приложении. Ошибка происходит при чтении из файла объекта класса. Т.е. я записываю с помощью WriteFile() объект своего класса в файл, потом считываю из файла с помощью ReadFile. Призавершении программы происходит ошибка. В классе есть элемент-данные, память под которые выделяется из кучи с помощью HeapAlloc() (поменял new и delete на HeapAlloc и HeapFree). Если я уберу из деструктора HeapFree(), то все работает нормально, если оставлю то ошибка доступа.
Кто сможет мне помочь?
0
24.09.2012, 09:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2012, 09:43
Привет! Вот еще темы с ответами:

Как получить private переменную класса, функцей членом другого класса - C++
Игра змейка: Есть класс поле в котором содержится размеры поля: class field { private: int FIELD_START; int...

Удаление экземпляра класса в функции самого класса (Ошибка при отладке) - C++
Допустим, у нас есть класс Buffer, который хранит в себе указатель на класс некоторой матрицы и количество этих указателей refcounter ...

Как получить доступ к методам класса, который содержится в векторе класса - C++
Пишу дерево с любым количеством наследников. В классе Thread содержится вектор классов Thread. При попытке просмотра первого элемента в...

Приём константных векторов класса, как аргументов в методе другого класса - C++
Есть такой класс: class Order { private: int numberOrder; map &lt;string, int&gt; catalogDish; double totalCost; public: ...


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

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

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