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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lvlkoo
.NET C#,ASP.NET MVC
 Аватар для lvlkoo
334 / 290 / 101
Регистрация: 16.10.2010
Сообщений: 1,280
Завершенные тесты: 2
#1

Связать классы. - C++

17.05.2011, 10:05. Просмотров 577. Ответов 7
Метки нет (Все метки)

Дрпустим есть два класса и некторые методы в них:

в 1(class c1)
C++
1
2
3
...
void SetLight(int lightcount)
...
в 2(class c2)
C++
1
2
3
...
void TurnPosition(int is_position);
...
хочу построить конструкцию вида
C++
1
2
3
4
5
6
7
8
9
10
void c2::CTurnPosition(int is_position)
{
     int position;
     position = is_position;
     switch(position)
     {
      case 1:
           c1::SetLight(10)
           break;
...
Однако выдает ошибку,что такая ссылка в классе невозможна(c1::SetLight(10))
Подкаже возможно ли както это сделать? или искать другие способы??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт С++
1016 / 795 / 48
Регистрация: 30.04.2011
Сообщений: 1,614
17.05.2011, 10:07     Связать классы. #2
Так, как написано - только статический метод класса можно вызывать.
Чтобы вызвать обычный, нужен объект.
Либо ты в классе с2 объявляешь поле-объект типа с1, либо нужно передать как параметр в метод.
Тогда метод вызывается так: объект.метод()
lvlkoo
.NET C#,ASP.NET MVC
 Аватар для lvlkoo
334 / 290 / 101
Регистрация: 16.10.2010
Сообщений: 1,280
Завершенные тесты: 2
17.05.2011, 10:12  [ТС]     Связать классы. #3
Спасибо.Принцип работы останеться тот же?
ValeryLaptev
Эксперт С++
1016 / 795 / 48
Регистрация: 30.04.2011
Сообщений: 1,614
17.05.2011, 10:15     Связать классы. #4
Цитата Сообщение от lvlkoo Посмотреть сообщение
Спасибо.Принцип работы останется тот же?
Да. Только синтаксис вызова поменяется.
lvlkoo
.NET C#,ASP.NET MVC
 Аватар для lvlkoo
334 / 290 / 101
Регистрация: 16.10.2010
Сообщений: 1,280
Завершенные тесты: 2
17.05.2011, 10:50  [ТС]     Связать классы. #5
А если я создам обьект данного класса(в котором уже есть поле обьект другого класса) в глайной функции,я смогу использовать тот обьект который обьявлен в классе?
absokolov
29 / 29 / 1
Регистрация: 10.05.2011
Сообщений: 120
17.05.2011, 10:58     Связать классы. #6
Цитата Сообщение от lvlkoo Посмотреть сообщение
А если я создам обьект данного класса(в котором уже есть поле обьект другого класса) в глайной функции,я смогу использовать тот обьект который обьявлен в классе?
Да!
Конечно смотря какая роль тех функций! Если там просто нужно принять параметры и провести какие-то действия с ними (без членов класса), то проще будет объявить эти методы статическими:

C++
1
static void SetLight(int lightcount)
lvlkoo
.NET C#,ASP.NET MVC
 Аватар для lvlkoo
334 / 290 / 101
Регистрация: 16.10.2010
Сообщений: 1,280
Завершенные тесты: 2
17.05.2011, 11:05  [ТС]     Связать классы. #7
Принимая параметр,он присваевается значению члена класса.Потому и спросил за обьект так как это значение потребуеться в будушем( для вывода сравнения и тд)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2011, 11:08     Связать классы.
Еще ссылки по теме:

Как связать 2 программы C++
C++ Правильно связать модули
C++ Связать классы Education и Info, предоставляющие информацию о сотруднике.
C++ Связать следующие классы в иерархию наследования: ArcherCharacter, Wizard, SwordsMan, LongRange
Связать два вектора C++

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

Или воспользуйтесь поиском по форуму:
absokolov
29 / 29 / 1
Регистрация: 10.05.2011
Сообщений: 120
17.05.2011, 11:08     Связать классы. #8
Цитата Сообщение от lvlkoo Посмотреть сообщение
Принимая параметр,он присваевается значению члена класса.Потому и спросил за обьект так как это значение потребуеться в будушем( для вывода сравнения и тд)
Ну в таком случае придется все таки создать члены классов!

C++
1
2
3
4
5
6
7
8
9
10
11
12
c2 cl2;
void cl2.CTurnPosition(int is_position)
{
     c1 cl1;
     int position;
     position = is_position;
     switch(position)
     {
      case 1:
           cl1.SetLight(10)
           break;
...
Yandex
Объявления
17.05.2011, 11:08     Связать классы.
Ответ Создать тему
Опции темы

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