LINUX.ORG.RU

не правильно проверяется

 ,


0

1

Всем привет!!! Имеется класс

class log
{
public:
void createLog(char *name);//создаёт лог
int elog;//переменная которая содержит информацию о существование лога если равна 1 то лог существует
void writeLog(char *name,char *text);//Записывает в лог
}
Теперь реализация функции createLog(char *name) но не вся
log::createLog(char *name)
{
log::elog=1;//говорим что лог существует
}
Теперь создаю обьект класса
log Log;
Log.createLog("log.log");
if(Log.elog == 1)
{
printf("Все ок");
}
Но почему-то сообщение «Все ок» не выводится



Последнее исправление: sergei9 (всего исправлений: 3)

Ответ на: комментарий от anonymous

создаю объект класса ini и вызываю метод openIni и если третий параметер больше чем 1 то должно сработать

i f ( mo d e > 1 ) { l o g L o g ; i f ( L o g . e l o g = = 1 ) L o g . wr i t e L o g ( " k a k a . l o g " , " Н е и з в е с т ный мо д i n i фа й л а " ) ; }
и записать все в файл кака но это работает только если убрать быт это
 i f ( L o g . e l o g = = 1 )
я сейчас с телефона поэтому эти пробелы в коде ставятся

sergei9
() автор топика
Ответ на: комментарий от sergei9

Идите почитайте книжку еще раз. Лучше какой нить С++ для чайников, или Марченко «бархатный путь к С++».

У Вас elog неинициализировано, т.е. его значения ХЗ какое (любое). Конструктор нужен именно для того, что бы его инициализировать. Ну или запустить свой код под valgrind-ом, он Вас в это дел носом ткнет.

А вообще собирать надо с опцией -Wall и внимательно читать ворнинги которые компилятор пишет - в нормальном коде их не должно быть вообще.

AIv ★★★★★
()
Ответ на: комментарий от AIv

char *namelog - последнее поле класса.

И что?

Так делать НЕЛЬЗЯ.

Можно, в данном случае будет исправно храниться указатель на хрен знает что.

andreyu ★★★★★
()
Ответ на: комментарий от sergei9

прочитал уже

Судя по коду, вы ничего из книги не поняли. Полное отсутствие понимания того, что вы понаписали. Сплошной мусор.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

то что я написал я понимаю,просто чужой код тяжелее понять чем свой

sergei9
() автор топика

Это аццкий пипец и целиком читать тред не хочу, сделать вдоль и \n в конце printf уже предлагали?

false ★★★★★
()
Ответ на: комментарий от anonymous

и чтобы там что нибудь понять нужно быть профи а когда ты уже профи то эта книга уже не понадобится

sergei9
() автор топика
Ответ на: комментарий от sergei9

Одобряю стейки

Стейк — от английского слова «кусок» — качественно приготовленный толстый кусок мяса, вырезанный из туши животного чаще всего поперёк, но в некоторых случаях и вдоль волокон. Википедия

shamaz
()
Ответ на: комментарий от sergei9

ГЛАВА 2. ОПИСАНИЯ И КОНСТАНТЫ

2.1 ОПИСАНИЯ

2.1.1 Область видимости

2.1.2 Объекты и адреса

2.1.3 Время жизни объектов

.....

Ы? или ты читал другую книгу Страуструпа?

А вот в первой главе действительно применяется стек для примеров. Следующий «стек» встречается, на сколь помню, главе в 4....Иди читай, много интересного узнаешь.

anonymous
()
Ответ на: комментарий от sergei9

Не каждому нравится читать Струструпа ил Кнута - это да. Но тебе тут уже посоветовали, например «Бархатный путь С++». Крайне годная книга для начала.

anonymous
()
Ответ на: комментарий от AIv

У Вас elog неинициализировано, т.е. его значения ХЗ какое (любое).

просто пол года программировал на pawno и привычка что значение не инициализированной переменой равно 0

sergei9
() автор топика
Ответ на: комментарий от AIv

Ок, делать можно если хочется иметь повод писать такие посты на лор.

Ну так поясните свою мысль:

char *namelog - последнее поле класса. Так делать НЕЛЬЗЯ.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

«Последнее поле класса» - это было пояснение ТСу о чем идет речь. Так делать нельзя не потому что это последнее поле класса (это неважно), а потому что в лучшем случае будет сегфолт.

AIv ★★★★★
()

надеюсь продолжение темы будет. подвезли аппарат с попкорном.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.