Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 31 из 87<  1 ... 28  29  30  31  32  33  34 ... 87  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 24.12.2005
1. GeometryType::proportional - так не надо писать, надо просто proportional.

2. Есть такая штука - forward declaration. :)
Код:
//object.h
class TreeViewItem;

class Object
{
public:
   Object();
   ~Object();
   TreeViewItem *item;
};


З.Ы. Как-то глупо архитектура выглядит с перекрёстными ссылками. Лучше передавать этот item в функцию draw. Я правильно понял, что draw у тебя вызывается из итема? Просто делать тогда draw( this ).



Партнер
 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
kexman писал(а):
Да я почитал, в принципе, как раз в случаях доступа к членам классов-потомков и используется dynamic_cast.
Ну вообще-то в твоем случае, на первый взгляд непомешало бы применить паттерн Visitor, но я решил не торопить события :)


kexman писал(а):
Выдает предупреждение warning C4482: nonstandard extension used: enum 'MModel::GeometryType' used in qualified name.
Названия типа здесь не пишется, очень интересно, как компайлер пропустил такое.

kexman писал(а):
Это приводит к ошибке ессесно. Вижу только одно решение, вместо TreeViewItem *item написать void *item, а затем преобразовать с помощью static_cast<TreeViewItem>(*item) уже в программе. Или есть другой, более правильный вариант?
Про Forward Declarations тебе уже расказали, впредь найти в инете инфу про идиому Саттера pimpl, почитай, там полезный материал по теме.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 12.12.2003
Откуда: Уфа
Билли Бонс
нет draw как раз работает не из item а из object, потому что данные все в object находятся, iteem отвечает лишь за отображения названия объекта и доступа к нему из списка.
Daemon
Окей прочту!
Добавлено спустя 3 часа, 6 минут, 20 секунд
Daemon
скачал Саттера, начал читать, вроде понятно, но все равно отложил, потому что много чего мне надо читать в обычной книге по c++, много чего еще не знаю, в частности исключений, шаблонов, stl, а саттер в основном про это и пишет


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
kexman Ты не Саттера читай, ты книжку по паттернам проектирования (Гамма, Хелм и др.) изучай потихоньку, это как раз основы объектно-ориентированного проектирования. :) Саттер сложноват, конечно.
Про твой Object (многозначительное название для класса :)) я спрашивал, откуда функция draw вызывается, а не в каком классе она находится (где она, я понял :)). Просто хотел понять, зачем понадобилось извращаться с перекрёстными ссылками.


 

Member
Статус: Не в сети
Регистрация: 11.04.2004
Откуда: СПБ
если о книжках сказать, то имхо очень хороша совместная книжка Саттера и Александреску Стандарты программирования на C++ (или как-то так). Там много полезных рекомендаций по разным темам. Обобщение опыта, так сказать. Ну и Гамма конечно.


 

Member
Статус: Не в сети
Регистрация: 11.07.2004
Откуда: Воронеж
Где почитать про реализацию работы с компортом...
В частности мне нужно будет послать сигнал, который является условием для начала цикла ожидания ответного сигнала. Ответный сигнал формируется замыканием проводов.
То есть своеобразное эхо получается....

_________________
Удачи и мудрости.


 

Member
Статус: Не в сети
Регистрация: 12.12.2003
Откуда: Уфа
Столкнулся со странностью в работе программы - пытаюсь реализовать достаточно нетривиальный алгоритм. Вкратце на плоскости задана область, внутри которой значение равно 1, а снаружи 0. Задана эта область марицей. В принципе это необязательно, так вот кое-что начало получаться. На некоторых исходных данных все более менее нормально, а на некоторых - что самое странное - при одном наборе исходных данных программа примерно в половине запусков либо зависает, а в остальной половине выдает ошибкуUnhandled exception at 0x004095d1 in Mapper.exe: 0xC0000005: Access violation reading location 0x01a8a33f. и указывает на строку, где проверяется одно из условий. Что самое странное исходные данные одни и теже, а программа в зависимости от запуска ведет себя по-разному. Кто-нибудь сталкивался с таким поведением? Мне кажется это не связано с самими алгоритмом, а с чем-то другим..


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
kexman Гадать - это к цыганкам. :) Проверяй работу с памятью, указатели. Где-то, видимо, за границей массива пишешь...
Добавлено спустя 1 минуту, 14 секунд
Koval В MSDN была старая статейка (ещё времён 95 виндов), я по ней делал - всё работало.
Добавлено спустя 18 минут, 8 секунд
Koval Во, нашёл: http://msdn2.microsoft.com/en-us/library/ms810467.aspx


 

Member
Статус: Не в сети
Регистрация: 12.12.2003
Откуда: Уфа
Билли Бонс
уфф, нашел ошибку, x и y попутал. Только все таки почему программа имея один и тот же набор исходных данных в зависимости от запусков работала по-разному??


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
Да потому что память срала где-то и портила другие переменные/стек/ещё что-нибудь нужное. Поведение при этом абсолютно непредсказуемо. Ведь не всё при запусках одинаково, например, адреса функций или переменных могут отличаться, ещё что-то.


 

Ребят, не подскажете, есть программа:
int main()
{
const int n=3;
int array[n][n];
for(int i=0; i<n; i++)
{cout<<endl;
for(int j=0; j<n; j++)
{array[i][j]=random(39);
array[i][j]=array[i][j]*array[i][j]+array[i][j]+41;
cout<<array[i][j]<<" ";
}
}
getch();
return 0;
}

Когда я пытаюсь сделать "n" не константой, а обычной переменной и присвоить ей какое нибудь значение, компилятор ругается так: Constant expression required. Как мне сделать так, чтобы я мог задавать "n" ?


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
Karr обычно объявляют заведомо большой массив(к примеру [10][10]), при вводе размерности проверяют чтобы n был <= 10 . Это если попроще. А посложнее отводить память под массив динамически, но боюсь для вас будет сложно :) .


 

Member
Статус: Не в сети
Регистрация: 11.07.2004
Откуда: Воронеж
Билли Бонс
Дааа, мсдн это хорошо.... Но мне, только начинающему человеку, трудно разобраться :(
Есть ли инфа где чуть ли не на пальцах разжевана работа с COM портом?
А то в этой мсдн я тока и понял как настроить порт на нужные параметры а вот как оределять приход сигнала, как то не очень въехал....

_________________
Удачи и мудрости.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Koval писал(а):
Есть ли инфа где чуть ли не на пальцах разжевана работа с COM портом
Ищи по CSerialPort.

_________________
Ку ку


 

mein Большое спасибо, сделал по первому варианту.


 

Member
Статус: Не в сети
Регистрация: 17.07.2005
Как проверить сивольный массив на присутствие в нем символа конца строки?


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
_nic strchr(str, '\n');

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
Daemon А если этот массив нуля не содержит? :)


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
_nic писал(а):
Как проверить сивольный массив на присутствие в нем символа конца строки?

Да, интересный вопрос :) . Можно просто пробежатся циклом по всем элементам строки в поисках конца строки(нуля). Желательно чтобы колличество итераций не превышало отведённой памяти под строку(уж это нужно знать точно).


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Билли Бонс писал(а):
Daemon А если этот массив нуля не содержит?
ну значит
try
{
strchr(str, '\0');
}
expect(EXCEPTION_EXECUTE_HANDLER)
{
printf("oooops\n");
}

_________________
Ку ку


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 31 из 87<  1 ... 28  29  30  31  32  33  34 ... 87  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan