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

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

Войти
Регистрация
Восстановить пароль
 
vvolka
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 36
#1

Переменые метода - C++

04.05.2012, 10:19. Просмотров 451. Ответов 10
Метки нет (Все метки)

Допустим есть класс:
C++
1
2
3
4
5
class Class1
{
public: 
      void method1(int i);
}
В main.cpp создаю экземпляр класса:
C++
1
Class1 class1
И хочу использовать метод:
C++
1
class1.method1(i);
Компилятор ругается на необъявленную переменную i. Как исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2012, 10:19     Переменые метода
Посмотрите здесь:

Классы , переменые [c++] - C++
Вот немогу одно понять чем отличается: это class employee { public: void show_employee(void); int...

Переменые (ошибка) - C++
Всем привет! Есть две ошибки: "Cannot convert 'wchar_r*' to 'const char*'" в строке strcpy (buf,Memo1->Text.c_str()); , и в строке...

Теряется указатель на переменые в классе - C++
образован двусвязный список. Данные находятся в трех перменныех, посел поступления данных в функцию sAge указатели на перменные типа char...

Описать класс,содержащий переменые,которые соответствуют координатам двух точек - C++
Описать класс,содержащий переменые,которые соответствуют координатам двух точек.Написать функцию,которая находит длину стороны по...

Вызов метода класса из метода другого класса - C++
Помогите школнегу Имеется несколько классов class Com { protected: unsigned char bufrd, bufwr; unsigned char tx_index,...

3 метода соотировка - C++
написать 3 метода соотировка

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
04.05.2012, 10:29     Переменые метода #2
vvolka, Почитать книжку. Название переменной в методе не имеет никакого значения извне
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
class Class1
{
public: 
      void method1(int i) { std::cout << i << std::endl; }
}
 
int main()
{
    Class1 class1;
    class1.method(5);
    int c = 10;
    class1.method(c);
}
vvolka
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 36
04.05.2012, 11:44  [ТС]     Переменые метода #3
Мне немного не так надо использовать или я неправильно спрашиваю, прощения прошу.

Вот есть два класса
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Class1
{
public:
    void method1(int i);
private:
       int j;
}
 
class Class2
{
public:
void method1(int i);
private:
    Class1 class2;
}
реализация методов
C++
1
2
3
4
5
6
7
8
9
void Class1::method1(int i)
{
    j = i;
}
 
void Class2::method1(int i)
{
    class2.method1(i);
}
вот я создаю экземпляр Class1 class1
и вызываю метод class1.method1(i); //Здесь ошибка.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
04.05.2012, 11:51     Переменые метода #4
вот я создаю экземпляр Class1 class1
и вызываю метод class1.method1(i); //Здесь ошибка.
Что есть i с которым вы пытаетесь вызвать метод? Выше приведенный код вполне корректен.
andy_111
90 / 59 / 2
Регистрация: 03.07.2011
Сообщений: 148
04.05.2012, 11:57     Переменые метода #5
Вам же объяснили - в приведенном коде
C++
1
class1.method1(i);
i является внешней переменной - по сути дела внутрь передается ее значение. Вы ее не объявили до использования. Сделайте так :
C++
1
2
3
Class1 class1;
int i = 100;
class1.method1(i);
vvolka
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 36
04.05.2012, 12:24  [ТС]     Переменые метода #6
я понимаю, что если предварительно I инициализировать чем-либо, то ошибки не возникнет. Но как быть если нужно использовать именно class1.method1(i) ?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
04.05.2012, 12:29     Переменые метода #7
vvolka, Что значит НУЖНО использовать? void method(int i); функция, которая принимает в себя извне параметр типа int. И извне абсолютно не важно какое имя. Еще раз повторяю.
http://liveworkspace.org/code/15dbd8...5eb8a9236124bc
vvolka
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 36
04.05.2012, 12:33  [ТС]     Переменые метода #8
В примере:
C++
1
2
3
4
5
6
7
8
int main()
{
   C obj;
   obj.method(10);
   obj.method(100);
   int c = 1000;
   obj.method(c);
}
переменная с инициализируется. А если мне к примеру надо вызывать метод не один раз?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
04.05.2012, 12:36     Переменые метода #9
vvolka, И что? Я не знаю как еще объяснить. Хоть 100 раз. Переменная называется i только внутри метода - это локальная переменная для функция, при передаче параметра в эту функцию, значение параметра копируется в локальную переменную i. При вызове obj.method(10) локальная переменная i в функции method примет значение 10. Читайте книжки, а?
Арсенал
144 / 66 / 6
Регистрация: 30.12.2011
Сообщений: 137
04.05.2012, 12:52     Переменые метода #10
vvolka

к примеру можно и так:

C++
1
2
for (int i=0; i<10; i++)
     class1.method1(i);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2012, 18:01     Переменые метода
Еще ссылки по теме:

Вызов метода - C++
Друзья подскажите пожалуйста! Есть родительский класс TModel, в нем есть метод Euler2(), как это метод вызвать в дочернем классе...

Вызов метода - C++
Добрый вечер, я не знаю c++, пытаюсь разобраться, знаком с c#, delphi. Создаю библиотеку для c# проекта. Как вызвать метод? ...

Выбор перегруженного метода - C++
Этот вопрос вырос из этого вопроса . Почему при integral conversions/promotions нет приоритетов &quot;сужающее&quot; или &quot;расширяющее&quot; при выборе...

Странное с return метода - C++
На первом скриншоте видно, что в некотором методе update() указатель this указывает на.. эм.. что-то страшное, хотя всё должно быть...


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

Или воспользуйтесь поиском по форуму:
vvolka
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 36
04.05.2012, 18:01  [ТС]     Переменые метода #11
ForEveR
Арсенал


Сказал же, что не знаю чему равно i, почему Вы упорно предлагаете его проинициализировать чем-либо.

Проблему решил через
C++
1
__declspec(property ...);
Всем спасибо за участие.
Yandex
Объявления
04.05.2012, 18:01     Переменые метода
Ответ Создать тему
Опции темы

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