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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
#1

Ошибка на стадии выполнения ptr = ptr; - C++

25.07.2013, 16:50. Просмотров 1117. Ответов 25
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class CObject
{
friend Parser;
// много полей методов, все должны заполняться в парсере
}
 
class Parser
{
CObject * object_
public:
    void CParser::LoadFromEcad(CObject * object, const std::wstring & path)
    {
        object_ = object; //  Тут происходит ошибка
    }
}
C++
1
2
3
4
5
6
7
Foo * soldat;
int main()
{
   CParser * parser = new CParser;
   CObject * object = new CObject;
   parser->LoadFromEcad(object,L"blabla.ecad");
}
Сообщение об ошибке:
Кликните здесь для просмотра всего текста
Unhandled exception at 0x777415de in ecad.exe 0xC00000005: Access violation writing location 0x0000004.

Заголовочный файл парсера и код вызываемой функции:
Кликните здесь для просмотра всего текста

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
#pragma once
#pragma comment( lib, "shlwapi.lib" )
 
#include <Windows.h>
#include <Shlwapi.h>
#include <io.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <vector>
#include <string>
#include "userfn.h"
#include "usertypes.h"
#include "engine/Object.h"
 
class CParser
{
    CObject * object_;
    static std::wstring type_parsing[7];
public:
    void LoadFromEcad(CObject * object, const std::wstring & path);
private:
    bool IsFileExist(const std::wstring & file_path);
    void IndexParse(std::ifstream & file_stream, std::string & tmp);
    void VertexParse(std::ifstream & file_stream, std::string & tmp);
    void DiffuseParse(std::ifstream & file_stream, std::string & tmp);
    void AmbientParse(std::ifstream & file_stream, std::string & tmp);
    
};
void CParser::LoadFromEcad(CObject * object, const std::wstring & path )
{
    if (IsFileExist(path))
    {
        object_ = object; // ВОТ ОНА ОШИБКА
        std::ifstream file_stream( path.c_str() );
        std::string tmp;
        file_stream >> tmp;
        if ( tmp == "START" )
            while (tmp != "END")
            {
                file_stream >> tmp;
                VertexParse(file_stream,tmp);
                IndexParse(file_stream,tmp);
                DiffuseParse(file_stream,tmp);
                AmbientParse(file_stream,tmp);
            }
        file_stream.close();
    }
    else
    {
        // InitEmptyObject();
    }
}

Пожалуйста если кто-то знает почему такая ошибка возникает чаще всего или возникала у вас, прошу сообщить тоже...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2013, 16:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка на стадии выполнения ptr = ptr; (C++):

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

bad ptr - C++
Здравствуйте! Пишу небольшую программу для работы с текстом. При substr'е куска строки вывелся не только нужный мне кусок, но и немного...

Неверно работает код *ptr++ = *ptr2++ - C++
Собственно столкнулся со следующей проблемой, код выглядит так: #include &lt;iostream&gt; using std::cout; using std::endl; int...

Значение указателей (*ptr.) на пустые ячейки памяти - C++
Здравствуйте, уважаемые форумчане! С началом изучения С++ стало возникать множество вопросов. Когда резервируется свободная память...

Как динамически обьявить многомерный массив (ptr = new int[5][5])? - C++
как обявить вот такую вот штуку: int * ptr = new int; заранее благодарен Роман.

Что означает строка: CString &ptr = Text; ? - C++
Помогите please! Что означает строка: CString &amp;ptr = Text; Text определена выше, как: CString Text;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.07.2013, 17:10 #2
Цитата Сообщение от vbloodv Посмотреть сообщение
object_ = object; // Тут происходит ошибка
Цитата Сообщение от vbloodv Посмотреть сообщение
// много полей методов, все должны заполняться в парсере
Тут и ищите ошибку. Ясновидящих нет.
1
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
25.07.2013, 17:45  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Тут и ищите ошибку. Ясновидящих нет.
Но если я через F10 и F11 (передвигаюсь по коду visual studio) просматриваю выполнение, программа вылетает именно в месте где указатель получает указатель на объект. В методах ничего особого не происходит...
Парсер:
Кликните здесь для просмотра всего текста
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
#include "Parser.h"
void CParser::LoadFromEcad(CObject * object, const std::wstring & path )
{
    if (IsFileExist(path))
    {
        object_ = object;
        std::ifstream file_stream( path.c_str() );
        std::string tmp;
        file_stream >> tmp;
        if ( tmp == "START" )
            while (tmp != "END")
            {
                file_stream >> tmp;
                VertexParse(file_stream,tmp);
                IndexParse(file_stream,tmp);
                DiffuseParse(file_stream,tmp);
                AmbientParse(file_stream,tmp);
            }
        file_stream.close();
        /*
        inputFile.close();
        object.CalculateNormalVector();
        //device->SetMaterial( &object.material);
        object.RotationAXis(object.pitch,object.yaw,object.roll);
        */
    }
    else
    {
        // InitEmptyObject();
    }
}
 
inline bool CParser::IsFileExist(const std::wstring & file_path)
{
    return PathFileExistsW( file_path.c_str() ) == TRUE;
}
 
void CParser::VertexParse( std::ifstream & file_stream, std::string & tmp )
{
    if (tmp == "<vertex>")
        file_stream >> tmp;
        while(tmp != "</vertex>")
        {
            float x,y,z;
            x = to_float(tmp);
            file_stream >> tmp;
            y = to_float(tmp);
            file_stream >> tmp;
            z = to_float(tmp);
            object_->vertex_database.push_back(CUSTOMVERTEX(x,y,z));
            file_stream >> tmp;
        }
        file_stream >> tmp;
}
 
void CParser::IndexParse( std::ifstream & file_stream, std::string & tmp )
{
    if (tmp == "<index>")
        file_stream >> tmp;
        while(tmp != "</index>")
        {
            object_->index_database.push_back(to_int(tmp));
            file_stream >> tmp;
        }
        file_stream >> tmp;
}
 
void CParser::DiffuseParse( std::ifstream & file_stream, std::string & tmp )
{
    if (tmp == "<diffuse_rgba>")
        file_stream >> tmp;
        while(tmp != "</diffuse_rgba>")
        {   
            object_->material.Diffuse.r = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.g = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.b = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.a = to_float(tmp);
            file_stream >> tmp;
        }
        file_stream >> tmp;
}
 
void CParser::AmbientParse( std::ifstream & file_stream, std::string & tmp )
{
    if (tmp == "<diffuse_rgba>")
        file_stream >> tmp;
        while(tmp != "</diffuse_rgba>")
        {   
            object_->material.Diffuse.r = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.g = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.b = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.a = to_float(tmp);
            file_stream >> tmp;
    }
    file_stream >> tmp;
}

Объект:
Кликните здесь для просмотра всего текста
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
#include "Object.h"
CObject::CObject()
{
    D3DXMatrixIdentity(&matrix_transform);
    CalculateNormalVector();
    ZeroMemory( &material, sizeof(material) );
    material.Ambient.a = material.Ambient.b = material.Ambient.g = material.Ambient.r = 1;
    material.Diffuse.a = material.Diffuse.b = material.Diffuse.g = material.Diffuse.r = 1;
    text.Initialize();
    pitch = yaw = roll = 1.f;
    b_picked = false;
}
 
void CObject::TurnOnOffText()
{
    text.TurnOnOff();
}
 
void CObject::CopyToBuffer()
{
    bool bError = false;
    if( FAILED( device->CreateVertexBuffer( vertex_database.size()*sizeof(CUSTOMVERTEX),    0 , D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &vertex_buffer, NULL ) ) ) bError = true;
    if( FAILED( device->CreateIndexBuffer(30*sizeof(index_database),0,D3DFMT_INDEX16,D3DPOOL_DEFAULT,&index_buffer,NULL ) ) ) bError = true;
    VOID* pVertices;
    VOID* pIndex;
    if( FAILED( vertex_buffer->Lock( 0, vertex_database.size()*sizeof(CUSTOMVERTEX), (void**)&pVertices, 0 ) ) ) bError = true;
    if( FAILED( index_buffer-> Lock(0, vertex_database.size()*sizeof(USHORT),   (void**) &pIndex,0) ) ) bError = true;
    if (bError)
    {
        MessageBoxW(NULL,L"Ошибка в программе",L"Сообщение об ошибке",NULL);
        PostQuitMessage(0);
    }
    
    memcpy( pVertices, &vertex_database[0], vertex_database.size()*sizeof(CUSTOMVERTEX));
    memcpy( pIndex, &index_database[0], index_database.size()*sizeof(USHORT));
    vertex_buffer->Unlock();
    index_buffer->Unlock();
}
void CObject::Update()
{
    GetObjectCenter();
    TextDraw();
}
void CObject::Draw()
{   
    device->SetStreamSource( 0, vertex_buffer, 0, sizeof(CUSTOMVERTEX) );
    device->SetFVF(D3DFVF_CUSTOMVERTEX);
    device->SetIndices(index_buffer);
    device->SetTransform(D3DTS_WORLD,&matrix_transform);
    device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,vertex_database.size(),0,index_database.size()/3);
    text.Write();
}
 
void CObject::CalculateNormalVector()
{
    D3DXVECTOR3 u,v,n;
    D3DXVECTOR3 poli[3];
    for (unsigned int i = 0; i < index_database.size(); i+=3)
    {
        for (unsigned int j = 0;j<3;j++)
        {
            poli[j]=vertex_database.at(index_database.at(i+j)).ToVector();
        }
        u = poli[1]-poli[0];
        v = poli[2]-poli[0];
        D3DXVec3Cross(&n,&v,&u); // v * u, именно в таком порядке !
        D3DXVec3Normalize(&n,&n);
        for (unsigned int j = 0;j<3;j++)
        {
            vertex_database.at(index_database.at(i+j)).SetNormalVector(n);
        }
    }
}
 
 
void CObject::GetObjectCenter() 
{
    D3DXVECTOR3 sum(0,0,0);
    for (unsigned int i = 0; i < index_database.size(); i++)
    {
        unsigned int j = index_database.at(i);
        sum+= D3DXVECTOR3(vertex_database.at(j).x,vertex_database.at(j).y,vertex_database.at(j).z);
    }
    center = D3DXVECTOR3(sum.x/vertex_database.size(),sum.y/vertex_database.size(),sum.y/vertex_database.size());
}
 
 
 
void CObject::TextDraw() // организовать подачу через камеру
{
    GetObjectCenter();
    LONG top,bottom,right,left;
    D3DXVECTOR3 screenspace = camera->WorldToScreen(D3DXVECTOR3(center.x,center.y,0.f),&matrix_transform);
    D3DXVECTOR3 worldspace = camera->ScreenToWorld(D3DXVECTOR3(center.x,center.y,0.f),&matrix_transform);
    int coor = 140;
    top    = (LONG) screenspace.y-coor;
    bottom = (LONG) screenspace.y+coor;
    right  = (LONG) screenspace.x+coor;
    left   = (LONG) screenspace.x-coor;
    text.SetRect(top,bottom,right,left);
    text = L"rect(" + to_wstr((int)screenspace.x) + L";" + to_wstr((int)screenspace.y) + L")";
    text = L"center(" + to_cut_wstr(worldspace.x) + L";" + to_cut_wstr(worldspace.y) + L";" + to_cut_wstr(worldspace.z) + L")";
    text = L"vertices:" + to_wstr(vertex_database.size()) + L"  indexes:" + to_wstr(index_database.size());
    text = L"Pitch:" + to_cut_wstr(pitch);
    text = L"Yaw:" + to_cut_wstr(yaw);
    text = L"Roll:" + to_cut_wstr(roll);
    text = L"Picked:" + to_wstr(b_picked);
}
 
void CObject::RotationAXis(float & _x,float & _y,float _z = 0.f)
{
    const float strenght = 0.005f;
 
    yaw += _x * strenght;
    pitch += _y * strenght;
    roll += _z  * strenght;
    D3DXMatrixRotationYawPitchRoll(&matrix_transform,pitch,yaw,roll);
    b_changed = true;
}
 
void CObject::RotationAxis(D3DXVECTOR3& Axis,float angle)
{
    D3DXMatrixRotationAxis(&matrix_transform,&Axis,D3DXToRadian(angle));
    b_changed = true;
}
 
void CObject::MoveOnX(float value)
{
    D3DXMatrixTranslation(&matrix_transform,value,0.f,0.f);
    b_changed = true;
}
void CObject::MoveOnY(float value)
{
    D3DXMatrixTranslation(&matrix_transform,0.f,value,0.f);
    b_changed = true;
}
 
void CObject::MoveOnZ(float value)
{
    D3DXMatrixTranslation(&matrix_transform,0.f,0.f,value);
    b_changed = true;
}
 
void CObject::MoveOnVector(D3DXVECTOR3 &vec)
{
    D3DXMatrixTranslation(&matrix_transform,vec.x,vec.y,vec.z);
    b_changed = true;
}
 
void CObject::LoadObjectFromECAD(const std::string & szFileName)
{
    std::ifstream inputFile( szFileName.c_str() ); // Передаем имя файла из которого нужно читать
    std::string tmp;
    inputFile >> tmp;
    if (tmp == "vertex:")
    {
        inputFile >> tmp;
        while (tmp != "index:")
        {
            float x,y,z;
            x = to_float(tmp);
            inputFile >> tmp;
            y = to_float(tmp);
            inputFile >> tmp;
            z = to_float(tmp);
            vertex_database.push_back(CUSTOMVERTEX(x,y,z));
            inputFile >> tmp;
        }
    }
    if (tmp == "index:")
    {
        inputFile >> tmp;
        while (tmp != "END.")
        {
            index_database.push_back(to_int(tmp));
            inputFile >> tmp;
        }
    }
    inputFile.close();
    CalculateNormalVector();
    device->SetMaterial( &material);
    RotationAXis(pitch,yaw,roll);
};
 
void CObject::LoadMaterial(const std::string & szFileName)
{
    std::ifstream inputFile( szFileName.c_str() ); // Передаем имя файла из которого нужно читать
    std::string tmp;
    inputFile >> tmp;
    if (tmp == "DiffuseRGBA:")
    {
        inputFile >> tmp;
        material.Diffuse.r = to_float(tmp);
        inputFile >> tmp;
        material.Diffuse.g = to_float(tmp);
        inputFile >> tmp;
        material.Diffuse.b = to_float(tmp);
        inputFile >> tmp;
        material.Diffuse.a = to_float(tmp);
        inputFile >> tmp;
    }
    if (tmp == "AmbientRGBA:")
    {
        inputFile >> tmp;
        material.Ambient.r = to_float(tmp);
        inputFile >> tmp;
        material.Ambient.g = to_float(tmp);
        inputFile >> tmp;
        material.Ambient.b = to_float(tmp);
        inputFile >> tmp;
        material.Ambient.a = to_float(tmp);
        inputFile >> tmp;
    }
    inputFile.close();
}
 
void CObject::CheakHit(const POINT2D & ptMouseHit)
{
    D3DXVECTOR3 vecCamPos; // Первая точка в векторе это позиция камеры
    D3DXVECTOR3 vecRayEnd; // Эта точка куда стреляет камера, условно она находися в 0 позиции по оси Z, т.к. объекты с нее не уедут
    D3DXVECTOR3 vecLineDirection; // я очень надеюсь что это будет луч стреляющий в объект
    D3DXVECTOR3 vecNormal; // Нормаль для плоскости (читай полигона)
    D3DXVECTOR3 vecFromCamPosToPoly = vecCamPos; // Вектор до плоскости
    float fDistanceToPlane; // Расстояние до плоскости
 
    vecCamPos = camera->GetCameraPosition();
    vecRayEnd = camera->ScreenToWorld(D3DXVECTOR3(ptMouseHit.x,ptMouseHit.y,0.f),&matrix_transform);
    vecLineDirection = vecRayEnd - vecCamPos; // Получаем лучь стреляющий из позиции камеры в сторону которую счелкает мышь
 
    // Тут находятся нормали для каждого полигона
    for (unsigned int i = 0; i < index_database.size(); i+=3)
    {
        D3DXVECTOR3 point3dOnPoly = vertex_database.at(index_database.at(i)).ToVector();
        vecNormal = vertex_database.at(index_database.at(i)).GetNormalVector();
        vecFromCamPosToPoly = point3dOnPoly - vecCamPos;
        
                
        // for (unsigned int j = 0;j<3;j++){} //vecNormal = vertex.at(index.at(i+j)).GetNormalVector();
        
 
 
    }
    
 
}

Но их код не нужен.
1.Ошибок доступа нет, т.к. программа линкуется
2.Вызова не инициализированных значений нет, т.к. до этих полей не доходит выполнение
Ложиться все на
C++
1
 object_ = object;
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.07.2013, 18:29 #4
Добавлено через 17 минут
Цитата Сообщение от vbloodv Посмотреть сообщение
friend Parser;
У вас такое компилируется?

Добавлено через 7 минут
Ошибка непонятна. В самом присвоении я ошибки не вижу.
1
Croessmah
Эксперт CЭксперт С++
13214 / 7485 / 843
Регистрация: 27.09.2012
Сообщений: 18,401
Записей в блоге: 3
Завершенные тесты: 1
25.07.2013, 20:11 #5
Цитата Сообщение от vbloodv Посмотреть сообщение
Но если я через F10 и F11 (передвигаюсь по коду visual studio)
Режим Debug или Release?
0
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
25.07.2013, 22:49  [ТС] #6
Цитата Сообщение от Croessmah Посмотреть сообщение
Режим Debug или Release?
Debug. Попробовать через отлатчик Release версии ?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
26.07.2013, 00:28 #7
просто проследи, откуда берётся этот невалидный указатель на 0x0000004
Такое впечатление, что либо какой-то new возвратил 0
Либо ещё где-то какой-то указатель обнулён или неинициализирован...
Пройдись по программе пошагово, смотря на значения указателей на твои объекты с помощью Watch.
0
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
26.07.2013, 03:08  [ТС] #8
Цитата Сообщение от alsav22 Посмотреть сообщение
У вас такое компилируется?
Да, более чем. (за тем лишь нюансом что перед объектом стоит объявления парсера)
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 03:25 #9
У вас класс Parser есть и класс CParser?
1
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.07.2013, 10:05 #10
Цитата Сообщение от vbloodv Посмотреть сообщение
отлатчик Release версии
что это такое?
Где-то кроме как в LoadFromEcad CObject используется?
Уберите временно поле object_ из класса и все его использования. Попробуйте запустить.
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 14:55 #11
vbloodv, если ещё актуально, выложите весь код, можно поискать причину.
1
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
26.07.2013, 15:18  [ТС] #12
Цитата Сообщение от alsav22 Посмотреть сообщение
vbloodv, если ещё актуально, выложите весь код, можно поискать причину.
Да, очень актуально! Весь код по этим классам или (с позволения администрации) код на весь проект на google.drive?
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 15:39 #13
Это.
Цитата Сообщение от vbloodv Посмотреть сообщение
код на весь проект на google.drive
Добавлено через 3 минуты
И данные, которые используете, когда ошибка появляется.
1
SoulYangOr
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 10
26.07.2013, 15:58 #14
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
просто проследи, откуда берётся этот невалидный указатель на 0x0000004
Такое впечатление, что либо какой-то new возвратил 0
Либо ещё где-то какой-то указатель обнулён или неинициализирован...
Пройдись по программе пошагово, смотря на значения указателей на твои объекты с помощью Watch.

Поддерживаю, ошибка чтения памяти
Попробуй сначала убрать указатель в аргументах функции, если ошибка пропадет, то проблема в нем, если нет то тут что еще)
0
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
26.07.2013, 16:21  [ТС] #15
Цитата Сообщение от SoulYangOr Посмотреть сообщение
Попробуй сначала убрать указатель в аргументах функции, если ошибка пропадет, то проблема в нем, если нет то тут что еще)
если убрать object_ = object; ошибка исчезает и появляется только там где объект начинает использоваться (т.к. указатель есть, но он не идентифицирован).
Если изменить сигнатуру функции убрать указатели, в функцию передать значение, то те же ошибки только в профиль:
Кликните здесь для просмотра всего текста
Unhandled exception at 0x76f215de in ecad.exe: 0xC0000005: Access violation writing location 0x00000000.
.
Если просматривать через watch точку останова в области функции LoadFromEcad:
то object нормальный указатель(или объект с не идентифицированными полями), а object_ CXX0017:Error: symbol "object_" not found.
Проект в публичном доступе
Кликните здесь для просмотра всего текста
P.S. Все замечания по проекту (именование переменных, ошибки, плохая структура, небезопасные места) в ЛС.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2013, 16:21
Привет! Вот еще темы с ответами:

Unique ptr в классе - C++
Добрый вечер, есть ли реальное решение придерживаться правилу нуля и иметь в классе std::unique_ptr ?

На стадии выполнения выпадает исключение: найти причины и исправить ошибку - C++
Добрый день. Имеется следующая проблема. Visual studio 2017. #include &lt;iostream&gt; #include &lt;string&gt; struct patrons { std::string...

Укажите где ошибка (ошибка во время выполнения программы) - C++
Здравствуйте, помогите пожалуйста найти ошибки в коде которые возникаю при выполнении программы Картинка с ошибкой внизу поста. Код: ...

Ошибки на стадии линковки - C++
obj\Release\main2.o:main2.cpp|| undefined reference to `__gxx_personality_sj0'| obj\Release\main2.o:main2.cpp|| undefined reference to...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.07.2013, 16:21
Ответ Создать тему
Опции темы

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