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

Методы доступа. Как именно метод привязывается к определённой переменной - C++

Восстановить пароль Регистрация
 
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
31.12.2013, 07:40     Методы доступа. Как именно метод привязывается к определённой переменной #1
Привет,форумчане.
Изучаю с++ по Либерти.
Дошёл до классов,точнее до методов доступа.
Написал код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
   Class Car
{
    public:
    int Setspeed(int speed);
    private:
    int speed;
};
   
    int main()
{
   Car Gas;
   Gas.Setspeed(5);
}
Если я правильно понял,то Setspeed-это метод,который обеспечивает доступ к переменной-члену speed.
Далее я хочу присвоить переменной speed значение "5" :Gas.Setspeed(5);.
Компилятор выдал ошибки:
1>first.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall Car::Setspeed(int)" (?Setspeed@Car@@QAEXH@Z) в функции _main
1>C:\Users\PC\documents\visual studio 2010\Projects\first\Debug\first.exe : fatal error LNK1120: 1 неразрешенных внешних элементов

Я не совсем понял,как именно метод привязывается к определённой переменной,видимо в этом ошибка.Просьба расписать верный вариант.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2013, 07:40     Методы доступа. Как именно метод привязывается к определённой переменной
Посмотрите здесь:

C++ Методы доступа к данным Get и Set
C++ Численные методы(метод дихотомии)
C++ Методы доступа - как это работает?
C++ Методы сортировки массивов.Метод пузырьковый
Разработать класс Airplane (самолет). Определить конструктор и деструктор. Реализовать объявленные методы доступа к данным. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rrrFer
Заблокирован
31.12.2013, 07:56     Методы доступа. Как именно метод привязывается к определённой переменной #2
Цитата Сообщение от Игорюня Посмотреть сообщение
Я не совсем понял,как именно метод привязывается к определённой переменной
Видимо, руками "привязать". Никто за тебя это не сделает
C++
1
void Car::SetSpeed(int val) { Speed = val; }
Почему он int возвращает - не понятно. Если это SetSpeed - то он должен устанавливать значение (может возвращать код ошибки, наверное, но есть более гуманные средства для этого). Если это GetSpeed - возвращать значение.
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
31.12.2013, 08:58  [ТС]     Методы доступа. Как именно метод привязывается к определённой переменной #3
Так приставки get и set имеют значение?Или это просто рандомное имя метода?
Firework
57 / 81 / 21
Регистрация: 01.04.2013
Сообщений: 567
31.12.2013, 09:01     Методы доступа. Как именно метод привязывается к определённой переменной #4
Цитата Сообщение от Игорюня Посмотреть сообщение
Так приставки get и set имеют значение?Или это просто рандомное имя метода?
Можешь назвать как угодно, работать будет также.
Вопрос в том, поймут ли тебя...
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
31.12.2013, 10:34  [ТС]     Методы доступа. Как именно метод привязывается к определённой переменной #5
Пример из учебника:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Cat
{  
  public:
    int Getage();
    void Setage(int Age);
 
    int Getweight();
    void Setweight(int Weight);
    
  private:
    int itsAge;
    int itsWeight;
};
Далее идёт пояснение:

Этот класс имеет четыре открытых метода.Getage и Setage дают доступ к переменной itsAge.Getweight и Setweight дают доступ к переменной itsWeight.
Вопрос в том,каким образом методы привязаны к определённым переменным,исходя из этого примера.Почему Getage и Setage привязаны именно к itsAge,а не к itsWeight.Я не понимаю принципа из этого примера. Разъяните идиоту.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
31.12.2013, 11:01     Методы доступа. Как именно метод привязывается к определённой переменной #6
Цитата Сообщение от Игорюня Посмотреть сообщение
каким образом методы привязаны к определённым переменным
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Cat
{  
  public:
    int Getage(){return itsAge;}// возвращает значение  itsAge
    void Setage(int Age)( itsAge=Age;} // устанавливает значение  itsAge
 
    int Getweight(){return itsWeight;}// возвращает значение itsWeight
    void Setweight(int Weight)( itsWeight=Weight;} // устанавливает значение  itsWeight
    
  private:
    int itsAge;
    int itsWeight;
};
Теперь должно быть понятно, что привязаны только потому, что так написано в коде.
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
31.12.2013, 13:03  [ТС]     Методы доступа. Как именно метод привязывается к определённой переменной #7
Цитата Сообщение от zss Посмотреть сообщение

Теперь должно быть понятно, что привязаны только потому, что так написано в коде.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
class Car
{
public:
    int Getspeed();
    void Setspeed(int Speed);
private:
    int itsSpeed;
};
int main()
{   
    Car gas;
    gas.Setspeed(5);
}
Судя учебнику,такая конструкция верна,но компилятор выдаёт ошибку о неразрешённом внешнем элементе.
То ли я такой тупой,то ли...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.12.2013, 13:12     Методы доступа. Как именно метод привязывается к определённой переменной #8
Цитата Сообщение от Игорюня Посмотреть сообщение
компилятор выдаёт ошибку о неразрешённом внешнем элементе
Реализаций методов нет, вот и выдаёт.

Добавлено через 4 минуты
И где там в книге такой код? Это же начало, объвление класса. Дальше почитайте, там и реализация методов будет, и код с main().
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
31.12.2013, 13:15     Методы доступа. Как именно метод привязывается к определённой переменной #9
Цитата Сообщение от Игорюня Посмотреть сообщение
Судя учебнику,такая конструкция верна,
Верна, но недостаточна. alsav22 уже сказал в чем дело. От себя хочу добавить, что имена функций могут быть какие угодно (учитывая разумные ограничения), что будет делать та или иная функция решает программист. Однако название давать надо говорящее и не противоречивое.
Цитата Сообщение от rrrFer Посмотреть сообщение
Почему он int возвращает - не понятно.
Ну, можно возвращать например прежнее значение.
get-методы хорошо бы сделать константными. Но это уже другая история
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
31.12.2013, 13:50  [ТС]     Методы доступа. Как именно метод привязывается к определённой переменной #10
Люди,тема создавалась,чтобы я понял как метод привязывается к переменной.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Cat
{  
  public:
    int Getage();
    void Setage(int Age);
 
    int Getweight();
    void Setweight(int Weight);
    
  private:
    int itsAge;
    int itsWeight;
};
Getage и Setage отвечают за переменную itsAge,а Getweight и Setweight за переменную itsWeight.
Как вы сами бы определили,что Getage отвечает именно за itsAge,а не за itsWeight!!! Вы определяете по названию метода и переменной?Или как?Объясните мне,как вы это определили!!!Я для этого тему и создал,чтобы понять,как методы привязываются к переменным.Наверное такая элементарщина,но уже несколько дней не могу понять.
yogurt
 Аватар для yogurt
58 / 58 / 1
Регистрация: 02.08.2008
Сообщений: 106
31.12.2013, 13:59     Методы доступа. Как именно метод привязывается к определённой переменной #11
Getage, Setage . . . itsAge

Getweight, Setweight . . . itsWeight

В Вашем коде Getage и Setage не отвечают за переменную itsAge, а Getweight и Setweight не отвечают за переменную itsWeight. У них на данном этапе просто имена похожи.
В Вашем коде ничего ни к чему не привязано. Методы в нём не реализованы. Смотрите пост zss. У него уже всё привязано и видно, что за что отвечает.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
31.12.2013, 14:02     Методы доступа. Как именно метод привязывается к определённой переменной #12
Цитата Сообщение от Игорюня Посмотреть сообщение
Вы определяете по названию метода и переменной?
С какой переменной будет связан (и будет ли вообще) метод определяет программист. Как напишите, так и будет.
Никакой связи на уровне языка между именем метода и тем что он будет делать нет.
Цитата Сообщение от Игорюня Посмотреть сообщение
понять,как методы привязываются к переменным.
Автоматически никак. Нужно написать ручками код (реализацию метода), который обозначит эту связь.
Читайте теорию про объявление и определение функций и переменных.
Arkaniy
 Аватар для Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 452
31.12.2013, 14:08     Методы доступа. Как именно метод привязывается к определённой переменной #13
В этом куске кода отсутствуют тела методов. Вот эти 4 строки - это просто объявления методов. Вот эта привязка, которая так мучает, находится в теле метода. Там всё видно, что чему присваевается или какое значение возвращается.
Названия же могут быть абсолютно любыми, но смысла в таких нету. Принято писать приставки get и set чтобы было сразу видно, что этот метод делает: возвращает какое-то значение или устанавливает. Но это только условности.
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
31.12.2013, 14:31  [ТС]     Методы доступа. Как именно метод привязывается к определённой переменной #14
Видима в книге представлена логическая привязка,а не синтаксическая.
Arkaniy
 Аватар для Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 452
31.12.2013, 15:14     Методы доступа. Как именно метод привязывается к определённой переменной #15
Видимо, там просто не написано тело метода.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.12.2013, 17:58     Методы доступа. Как именно метод привязывается к определённой переменной #16
Цитата Сообщение от Arkaniy Посмотреть сообщение
Видимо, там просто не написано тело метода.
Всё там написано, только нужно ещё две страницы прочитать.
Цитата Сообщение от alsav22 Посмотреть сообщение
Это же начало, объвление класса. Дальше почитайте, там и реализация методов будет, и код с main().
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
31.12.2013, 20:40     Методы доступа. Как именно метод привязывается к определённой переменной #17
Цитата Сообщение от alsav22 Посмотреть сообщение
Всё там написано, только нужно ещё две страницы прочитать.
Это, видимо, уже в следующем году случится
Jupiter
01.01.2014, 17:04
  #18

Не по теме:

Цитата Сообщение от Игорюня Посмотреть сообщение
Изучаю с++ по Либерти
сразу видно м-ученика

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2014, 07:40     Методы доступа. Как именно метод привязывается к определённой переменной
Еще ссылки по теме:

C++ Закрыть все переменные класса и добавить методы доступа к ним
C++ Методы Оптимизации: Метод параллельных касательных - нужен алгоритм
C++ Итерационные методы. Метод Якоби

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
02.01.2014, 07:40  [ТС]     Методы доступа. Как именно метод привязывается к определённой переменной #19
Всем спасибо,нужно было действительно прочитать пару страниц,а не пудрить вам мозги...
Yandex
Объявления
02.01.2014, 07:40     Методы доступа. Как именно метод привязывается к определённой переменной
Ответ Создать тему
Опции темы

Текущее время: 14:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru