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

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

Восстановить пароль Регистрация
 
lvlkoo
.NET C#,ASP.NET MVC
 Аватар для lvlkoo
301 / 257 / 89
Регистрация: 16.10.2010
Сообщений: 1,161
Завершенные тесты: 1
17.05.2011, 10:05     Связать классы. #1
Дрпустим есть два класса и некторые методы в них:

в 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
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
17.05.2011, 10:07     Связать классы. #2
Так, как написано - только статический метод класса можно вызывать.
Чтобы вызвать обычный, нужен объект.
Либо ты в классе с2 объявляешь поле-объект типа с1, либо нужно передать как параметр в метод.
Тогда метод вызывается так: объект.метод()
lvlkoo
.NET C#,ASP.NET MVC
 Аватар для lvlkoo
301 / 257 / 89
Регистрация: 16.10.2010
Сообщений: 1,161
Завершенные тесты: 1
17.05.2011, 10:12  [ТС]     Связать классы. #3
Спасибо.Принцип работы останеться тот же?
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
17.05.2011, 10:15     Связать классы. #4
Цитата Сообщение от lvlkoo Посмотреть сообщение
Спасибо.Принцип работы останется тот же?
Да. Только синтаксис вызова поменяется.
lvlkoo
.NET C#,ASP.NET MVC
 Аватар для lvlkoo
301 / 257 / 89
Регистрация: 16.10.2010
Сообщений: 1,161
Завершенные тесты: 1
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
301 / 257 / 89
Регистрация: 16.10.2010
Сообщений: 1,161
Завершенные тесты: 1
17.05.2011, 11:05  [ТС]     Связать классы. #7
Принимая параметр,он присваевается значению члена класса.Потому и спросил за обьект так как это значение потребуеться в будушем( для вывода сравнения и тд)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2011, 11:08     Связать классы.
Еще ссылки по теме:

Программа по классам, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы C++
C++ Связать векторы
C++ Связать классы Education и Info, предоставляющие информацию о сотруднике.

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

Или воспользуйтесь поиском по форуму:
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     Связать классы.
Ответ Создать тему
Опции темы

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