Russian Qt Forum
Ноябрь 24, 2024, 03:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Присвоение значений через функцию  (Прочитано 7790 раз)
admsasha
Гость
« : Май 23, 2010, 15:03 »

в моем классе есть функция присвоения значений.
Код:
void myClass::setps(int _x,int _y){
    x=_x;
    y=_y;
   
}

Возможно ли это более грамотно описать ? Может что-то можно дописать, чтобы одноименные параметры сразу же и присваивались ?

Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Май 23, 2010, 15:06 »

Нет, почитайте книги Шилдта по С++ для начала.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
admsasha
Гость
« Ответ #2 : Май 23, 2010, 15:21 »

Нет, почитайте книги Шилдта по С++ для начала.
По поводу чего ?
Записан
ranet
Гость
« Ответ #3 : Май 23, 2010, 16:07 »

Нет, почитайте книги Шилдта по С++ для начала.
Вобщем наверное да, но все же тема "Вопросы новичков" называется..  Не стоит человека, попросившего пояснений, посылать.
1) Переменные X и Y сначала нужно объявить внутри функции, у тебя это не сделано.
2) Это единственная безграмотность, ничего более "правильного" не существует. То есть если хочешь переменной значение присвоить, то именно это и нужно сделать. Как и написано Смеющийся
3) Если ты не собираешься МЕНЯТЬ значения этих переменных (_x и _y которые), то тебе нафиг не нужны локальные переменные x и y. В дальнейших вычислениях ты можешь их и использовать:
void myClass::setps(int _x,int _y){
int a;
//"дальнейшие вычисления"

a = _x+_y;
//еще чего нибудь   

   
}
Записан
admsasha
Гость
« Ответ #4 : Май 23, 2010, 16:25 »

1) Переменные X и Y сначала нужно объявить внутри функции, у тебя это не сделано.
Это сделано, но я не указал, в хедере есть (int x, int y).

2) Это единственная безграмотность, ничего более "правильного" не существует. То есть если хочешь переменной значение присвоить, то именно это и нужно сделать. Как и написано Смеющийся
Похоже, никто вопрос просто не понял

3) Если ты не собираешься МЕНЯТЬ значения этих переменных (_x и _y которые), то тебе нафиг не нужны локальные переменные x и y.
Это понятно. Я привел простейший пример, для вопроса. В реале же, есть функции которые эти значения потом используют. Вот для этого и нужно предварительно их назначить другой функцией.
Записан
ranet
Гость
« Ответ #5 : Май 23, 2010, 16:50 »


То есть если хочешь переменной значение присвоить, то именно это и нужно сделать. Как и написано Смеющийся
Похоже, никто вопрос просто не понял
Никаких "одноименных" переменных у тебя нету, в С "_y" и "y" - разные имена, не имеющие один к другому никакого отношения. Так что нельзя. Но главное - лучше ничего такого и не искать, присваивай переменные явным образом - надежнее будет.
Записан
ranet
Гость
« Ответ #6 : Май 23, 2010, 16:53 »

Это понятно. Я привел простейший пример, для вопроса. В реале же, есть функции которые эти значения потом используют. Вот для этого и нужно предварительно их назначить другой функцией.
Если в течение жизни обьекта нет необходимости менять значение "_x" и "_y", то можно прямо их и использовать в вычислениях.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Май 23, 2010, 17:45 »

в моем классе есть функция присвоения значений.
Код:
void myClass::setps(int _x,int _y){
    x=_x;
    y=_y;
   
}

Возможно ли это более грамотно описать ? Может что-то можно дописать, чтобы одноименные параметры сразу же и присваивались ?
В стиле жабы можно так
Код
C++ (Qt)
void myClass::setps( int x, int y )
{
   this->x = x;
   this->y = y;
}
Улыбающийся Но это на мой взгляд ни к чему, подчеркивания (как у Вас) проще и лучше. Чтобы "одноименные сразу присваивались" - в языке такого нет, можно накрутить макрос, но нет смысла. Все у Вас написано правильно, не сомневайтесь
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #8 : Май 23, 2010, 18:36 »

Цитировать
По поводу чего ?
admsasha, судя по вопросу вы новичок, поэтому дабы не захламлять форум лучше для начала почитайте книги по C++, где все понятно описано. Для пример я привел вам книгу Шилдта - "Полный справочник по C++", либо его другие творения.
P.S. Да и раздел не подходит для вашего вопроса "Qt->Вопросы новичков", лучше было бы занести его в "Программирование->C/C++".
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Май 24, 2010, 00:06 »

нет
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #10 : Май 24, 2010, 11:04 »

нет
Это к чему?
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #11 : Май 25, 2010, 23:54 »


Это ответ на тему.

-- Ваш К.О.
Записан
JamS007
Гость
« Ответ #12 : Август 19, 2010, 23:05 »

Может не совсем то, но удобно. В конструкторах допустима такая конструкция:

Код:
Object::Object(int x, int y) : 
      x(x), y(y)
{}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.073 секунд. Запросов: 23.