Переход с C на C++
Я до сегоднечнего дня программировал на C,а вот сегодня решил написать что нибуд на C++.
Так вот я создал MFC проект, на форму умистил CEdit текстовое поле,все нормально работало, в обычных функциях можно было работать через методы, но когда я решил написать свою собственную функцию и из него обратится к данному текстовому полю компилятор пишет undeclared variable
Примерно это выглядит так
{
m_Status.SetWindowText("LOL");
}
m_Status это то текстовое поля.
Так вот вопрос,почему в мною созданной функции на видно m_Status ?
Значит надо объявить m_Status.
Если что не так, выложите полный код, а то не понятно как Вы обявляли переменные и так далее, с полным кодом всегда более понятно и быстрее разбирёмся, тем более как я думаю он небольшой.
Надо сделать так (общий вид) допустим Вы проект назвали Sample:
{
m_Status.SetWindowText("LOL");
}
Поделай сначала консольные программы с классами.
Лично я С++ изучал по книге
"С++ в лекциях и упражнениях" автор Стивен Прата.
Что меня в этой книге порадовало код целый, а не куски из кода, ошибок в коде нету и опечаток в тексте.
Так как я пишу в основном консольные программы, а иногда с графическим интерфейсом мне достаточно знать С++ и WinAPI.
Счас начал идти дальше начал изучать DirectX 9.
Да,не говорите.
Как же я сам не догодался.
Надо сделать так (общий вид) допустим Вы проект назвали Sample:
{
m_Status.SetWindowText("LOL");
}
Я это переменные создавал стандартным способом, т.е. нажал правой кнопкой по объекту а там уже Add variable.
Я понял что в моей функции этой перем. на видно потому что он пренадлежит другому классу.
Я по пробовал написать перед функции идентификатор класса но не действует,может где нибудь еще что то надо настроит ?
Или есть ли возможность сделать все перем. публичными,т.е. чтобы можна было с ними работать из под любой функции ?
{
CEdit *m_Status;
m_Status->SetWindowText("LOL");
}
{
CEdit *m_Status;
m_Status->SetWindowText("LOL");
}
А если, как советует Тень Пса, "почитать учебники по С++" ?
Тебя не смущает, что ты используешь неинициализированный указатель?
Я по пробовал написать перед функции идентификатор класса но не действует,может где нибудь еще что то надо настроит ?
Или есть ли возможность сделать все перем. публичными,т.е. чтобы можна было с ними работать из под любой функции ?
Воспользуйся советом, почитай книги по С++.
Разберись, что такое класс, что такое члены класса.
Твоя ошибка, действительно, от незнания C++, но MFC тут не при чем, а "стандартный способ" - это объявить и определить член класса, а не "нажал правой кнопкой по объекту а там уже Add variable".
Я иногда забываю про это, но при отладке я их нахожу и поправляю.
А вообще я бы не советовал сразу пытаться разобраться с иерархией класов MFC. Лучше изучить сначало основы ООП (желательно без привязки к языку).
Я иногда забываю про это, но при отладке я их нахожу и поправляю.
Ага, вот так кто-то где-то забудет инициализировать что-то, а потом вылазит бага - сиди и ищи в нескольких тысячах строчек кода.
Лучше выработайте привычку инициализировать переменные при обьявлении - себе дешевле будет.
З.Ы. Это так, высказываю свое мнение, исходя из собственного опыта.
Важно не только инициализировать, но и после окончания использования объекта чистить память=)
Важно, но не на столько, как инициализация.
В принципе, в некоторых случаях можно и не освобождать.