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

Нарушение прав доступа при записи - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Массивы. Переписать элемент из двух в один http://www.cyberforum.ru/cpp-beginners/thread914883.html
const int N=10; int A, B; cout << "введите первый массив" << endl; for (int i(0); i<N; i++) { cout << "первый массив"<<endl; cout << "введите " << i+1 << " элемент массива: ";
C++ загаданное число помогите закончить программу int rNum,x; srand(time(0)); rNum = 1 + rand() % (10); cout << "введите число от 0 до 10 -> "; cin >> x ; if (x == rNum) cout << "вы угадали мое число"; else if (x < rNum) cout << "ваше число меньше моего"; http://www.cyberforum.ru/cpp-beginners/thread914882.html
Передача массива структур из класса в функцию memcpy C++
Всем привет! Проблема такая: в рабочем состоянии, массив структур создавался вот таким простым способом: CUSTOMVERTEX Bruce = {{ 50.0f, 50.0f, 0.5f, 0.5f, 0xffff0000}, { 51.0f, 50.0f, 0.5f, 0.5f, 0xffff0000}, { 52.0f, 50.0f, 0.5f, 0.5f, 0xffff0000}, { 53.0f, 50.0f, 0.5f, 0.5f, 0xffff0000}, { 54.0f, 50.0f, 0.5f, 0.5f, 0xffff0000}}; Соответственно, передавая...
C++ Как найти в двоичном дереве поиска минимальный элемент, превышающий некоторое заданное значение?
Вот примерная рекурсивная функция, но я не знаю, как выйти из нее в нужный момент. void range(Node *root, int r) { if (root==NULL) return; range(root->left, r); if(root->key > r) { printf("%d\n", root->key); return; //значение найдено, надо здесь выйти из функции, но она рекурсивная, полностью выйти не получается }
C++ Как найти в двоичном дереве поиска минимальный элемент, превышающий некоторое заданное значение? http://www.cyberforum.ru/cpp-beginners/thread914867.html
Вот примерная рекурсивная функция, но я не знаю, как выйти из нее в нужный момент. void range(Node *root, int r) { if (root==NULL) return; range(root->left, r); if(root->key > r) { printf("%d\n", root->key); return; //значение найдено, надо здесь выйти из функции, но она рекурсивная, полностью выйти не получается }
C++ Подскажите что не так я делаю (решить систему на встроенном ассемблере) Помогите пожалуйста решить систему на встроенном ассемблере. В чем мои ошибки? Сильно не судите, только начинаю писать... \begin{cases}&\text{ -10, a ravno b} \\ &\text{ (a-5)/b, a<b,} \\ &\text{ (1-b)a, a>b.} \end{cases} #include "stdafx.h" #include <typeinfo.h> #include <iostream> using namespace std; подробнее

Показать сообщение отдельно
inhalesulfur
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 6
30.06.2013, 07:15     Нарушение прав доступа при записи
Пытаюсь написать класс, который бы выполнял инициализацию шрифта в directx и печатал строку на экран.
Написал рабочий вариант, где инициализация Direct3D и шрифтов происходит в одном классе, помогите, пожалуйста теперь разделить их по разным классам.

cFont.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma once
//-----------------------------------------------------------------------------------
// Инициализация шрифтов
//-----------------------------------------------------------------------------------
#include "../include/cGlobal.h"
#include "../include/cGraphics.h"
//-----------------------------------------------------------------------------------
class cFont
{
private:
    
    RECT            Rec;
    CGraphics*      cGraphics;          // Указатель на класс, инициализирующий устройство Direct3D
 
public:
    cFont();
    ~cFont();
    BOOL            InitFont();
    LPD3DXFONT      GetFont()   { return pFont; }
 
};
cFont.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "../include/cFont.h"
 
cFont::cFont()
{
    pFont               = NULL;
    hFont               = NULL;
};
cFont::~cFont()
{
    SAFE_RELEASE( pFont );
};
BOOL cFont::InitFont()
{
    // Создаем шрифт
    if(NULL == (hFont = CreateFont(30,10,0,0,FW_NORMAL,FALSE,FALSE,0,1,0,0,0,DEFAULT_PITCH | FF_MODERN,"Arial")))
        return FALSE;   
    // Инициализируем шрифт
    if(FAILED(D3DXCreateFont(cGraphics->GetDevice(),30,10,0,0,FALSE,1,0,0,DEFAULT_PITCH|FF_MODERN, "Arial", &pFont)))
        return FALSE;
     return TRUE;
};
при обращении к методу InitFont() в 15 строке выдает ошибку
Кликните здесь для просмотра всего текста
Необработанное исключение в "0x002cb083" в "LostDevice.exe": 0xC0000005: Нарушение прав доступа при записи "0xcdcdcdd1".


Никак не могу понять, почему метод класса не может записать значение в переменную hFont того же класса.
Пытаюсь вызвать его из другого класса, объявив указатель cFont* m_pFont; m_pFont->InitFont( );
Кому не сложно, напишите как должен выглядеть класс, из которого я вызываю InitFont();

Добавлено через 13 минут
В похожей теме нашел ответ, что проблема может быть в том, что не вызывается конструктор и соответственно не инициализируется переменная hFont, и действительно оказалось, что программа не заходит в тело конструктора. В чем может быть причина? Остальные конструкторы, тысячи их, вызываются автоматически ^.^
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru