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

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

Восстановить пароль Регистрация
 
vvolka
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 36
04.05.2012, 10:19     Переменые метода #1
Допустим есть класс:
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. Как исправить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.05.2012, 11:51     Переменые метода #4
вот я создаю экземпляр Class1 class1
и вызываю метод class1.method1(i); //Здесь ошибка.
Что есть i с которым вы пытаетесь вызвать метод? Выше приведенный код вполне корректен.
andy_111
90 / 59 / 1
Регистрация: 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
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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++
C++ Вызов метода
Поток из не статического метода C++

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

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

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