Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314

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

25.07.2013, 16:50. Показов 3053. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.07.2013, 16:50
Ответы с готовыми решениями:

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

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

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

25
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.07.2013, 17:10
Цитата Сообщение от vbloodv Посмотреть сообщение
object_ = object; // Тут происходит ошибка
Цитата Сообщение от vbloodv Посмотреть сообщение
// много полей методов, все должны заполняться в парсере
Тут и ищите ошибку. Ясновидящих нет.
1
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
25.07.2013, 17:45  [ТС]
Цитата Сообщение от 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
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.07.2013, 18:29
Добавлено через 17 минут
Цитата Сообщение от vbloodv Посмотреть сообщение
friend Parser;
У вас такое компилируется?

Добавлено через 7 минут
Ошибка непонятна. В самом присвоении я ошибки не вижу.
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
25.07.2013, 20:11
Цитата Сообщение от vbloodv Посмотреть сообщение
Но если я через F10 и F11 (передвигаюсь по коду visual studio)
Режим Debug или Release?
0
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
25.07.2013, 22:49  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Режим Debug или Release?
Debug. Попробовать через отлатчик Release версии ?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
26.07.2013, 00:28
просто проследи, откуда берётся этот невалидный указатель на 0x0000004
Такое впечатление, что либо какой-то new возвратил 0
Либо ещё где-то какой-то указатель обнулён или неинициализирован...
Пройдись по программе пошагово, смотря на значения указателей на твои объекты с помощью Watch.
0
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
26.07.2013, 03:08  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
У вас такое компилируется?
Да, более чем. (за тем лишь нюансом что перед объектом стоит объявления парсера)
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 03:25
У вас класс Parser есть и класс CParser?
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
26.07.2013, 10:05
Цитата Сообщение от vbloodv Посмотреть сообщение
отлатчик Release версии
что это такое?
Где-то кроме как в LoadFromEcad CObject используется?
Уберите временно поле object_ из класса и все его использования. Попробуйте запустить.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 14:55
vbloodv, если ещё актуально, выложите весь код, можно поискать причину.
1
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
26.07.2013, 15:18  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
vbloodv, если ещё актуально, выложите весь код, можно поискать причину.
Да, очень актуально! Весь код по этим классам или (с позволения администрации) код на весь проект на google.drive?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 15:39
Это.
Цитата Сообщение от vbloodv Посмотреть сообщение
код на весь проект на google.drive
Добавлено через 3 минуты
И данные, которые используете, когда ошибка появляется.
1
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 10
26.07.2013, 15:58
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
просто проследи, откуда берётся этот невалидный указатель на 0x0000004
Такое впечатление, что либо какой-то new возвратил 0
Либо ещё где-то какой-то указатель обнулён или неинициализирован...
Пройдись по программе пошагово, смотря на значения указателей на твои объекты с помощью Watch.

Поддерживаю, ошибка чтения памяти
Попробуй сначала убрать указатель в аргументах функции, если ошибка пропадет, то проблема в нем, если нет то тут что еще)
0
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
26.07.2013, 16:21  [ТС]
Цитата Сообщение от 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
26.07.2013, 16:33

Не по теме:

vbloodv, Я вроде под пункты не попадаю, посему спрошу тут нафига тащится весь буст + локи, если используется только booot::lexical_cast?

1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 17:07
У меня boost нет.
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
26.07.2013, 17:09
Цитата Сообщение от alsav22 Посмотреть сообщение
У меня boost нет.
Ну у меня как бы тоже, но есть Inc/boost в архиве с проектом )))
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 18:27
У меня проект не компилируется, пэтому проверить не смогу.
1
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
26.07.2013, 19:09  [ТС]

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
vbloodv, Я вроде под пункты не попадаю, посему спрошу тут нафига тащится весь буст + локи, если используется только booot::lexical_cast?
В перспективе, раньше были shared_ptr, но я во время ошибки ptr = ptr избавился от них, фабрика на локе будет и одиночка. Я не заботился о оптимизации перед тем как выложить его в открытом...


По поводу тащить весь boost, у меня весь boost не прицеплен, я через bcp извлек только то что мне будет необходимо...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.07.2013, 19:09
Помогаю со студенческими работами здесь

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

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

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

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

Что означает ptr в строке byte ptr[si],al
Что означает ptr в строке byte ptr,al Вот весь код, может понадобится Преобразование двоичного числа в шестнадцатеричную форму ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru