Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функции в качестве члена класса 
:(
    Опции темы
Syltan
Дата 6.10.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: -1
Всего: -2



Вот изучаю классы, и я так понял,можно описывать функции вне класса, достаточно знака ": :".
Вот решил написать, поэкспериментировать. Что-то не выходит.
Код

#include <iostream>
using namespace std;

class fanta
{
public:
    int r1 = 15, r2 =20, rez;
    void k();
}
fanta::k()
{
    rez = r1 + r2;
}

int main()
{
  fanta a;
  a.k;
  cout<<a.k;
  cin.get();
}



Моя цель, должна получится вывестись сумма 2 чисел.

Это сообщение отредактировал(а) Syltan - 6.10.2009, 15:30
PM MAIL   Вверх
niXman
Дата 6.10.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: нет
Всего: 0



Syltan, А почему бы не прочитать вывод компилятора? smile 
Код

#include <iostream>
using namespace std;

class fanta
{
public:
    int r1 = 15, r2 =20, rez;
    void k();
}
void fanta::k()
{
    rez = r1 + r2;
}

int main()
{
  fanta a;
  a.k();
  cout<<a.k();
  cin.get();
}


--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
kemiisto
Дата 6.10.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата(Syltan @  6.10.2009,  16:29 Найти цитируемый пост)
Вот изучаю классы

Изучай дальше. smile Код ужасен и демонстрирует полное непонимание.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
mes
Дата 6.10.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



для начала имхо упростить код до такого:
Код

#include <iostream>

class fanta
{
  public:
      int sum (int, int);
};

int fanta::sum(int a, int b) { return a+b; }

int main {
fanta f;
std::cout << f.sum(15,20)<<std::endl;
std::cin.get();
}

потому как в исходном коде ошибки не только связанные с темой.

Это сообщение отредактировал(а) mes - 6.10.2009, 15:47


--------------------
PM MAIL WWW   Вверх
niXman
Дата 6.10.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: нет
Всего: 0



Цитата(mes @  6.10.2009,  13:37 Найти цитируемый пост)
потому как в исходном коде ошибки не только связанные с темой.

ах да smile 
Цитата(niXman @  6.10.2009,  13:34 Найти цитируемый пост)
int r1 = 15, r2 =20, rez;


--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
Syltan
Дата 6.10.2009, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: -1
Всего: -2



1)Что тема неправильна написана?
2)Я хочу использовать значения переменных 
Код

int r1 = 15, r2 =20;

Когда я создаю функцию член класса, тогда я могу пользоваться значениями из класса, тоесть
r1,r2.
3)Как мне сделать,чтоб значения задавать не здесь f.sum(15,20), а в классе.
Может вот так,ну что-то тоже не то:
Код


#include <iostream>
using namespace std;

class fanta
{
public:
    int r1 = 15, r2 =20, rez;
    void k();
}
fanta::k()
{
    return r1+r2;
}

int main()
{
  fanta a;
  int b = a.k;
  cout<<b;
  cin.get();
}



Это сообщение отредактировал(а) Syltan - 6.10.2009, 16:12
PM MAIL   Вверх
niXman
Дата 6.10.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: нет
Всего: 0



Код

class fanta
{
public:
    fanta():r1(15),r2(20) {}
    int r1, r2, rez;
    void k();
}
fanta::k()
{
    return r1+r2;
}

--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
Syltan
Дата 6.10.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: -1
Всего: -2



Так это с использованием конструкторов, а без использования конструкторов.
Просто я читаю книгу,там был пример без конструкторов. То есть смотрите,что я хочу.
Описать 2 переменные целого типа в классе, дать им значения. Создать функци-член класса, и
 воспользоваться этими значениями в описании самой функции. Затем,создать объект, через него получить доступ к функции, вызвав её, соответсвенно и получить после этого сумму 2 чисел.

Это сообщение отредактировал(а) Syltan - 6.10.2009, 16:38
PM MAIL   Вверх
niXman
Дата 6.10.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: нет
Всего: 0



Код

#include <iostream>
using namespace std;
class fanta
{
public:
    int r1, r2, rez;
    void k();
}
void fanta::k()
{
    return r1+r2;
}
int main()
{
  fanta a;
  a.r1 = 15;
  a.r2 = 20;
  int b = a.k();
  cout<<b;
  cin.get();
}


Добавлено через 1 минуту и 5 секунд
Про структуры и доспуп к членам почитай.

Это сообщение отредактировал(а) niXman - 6.10.2009, 16:39
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
Syltan
Дата 6.10.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: -1
Всего: -2



Код

#include <iostream>
using namespace std;
class fanta
{
public:
    int r1, r2, rez;
    void k();
};

void fanta::k()
{
    return r1+r2;
}
int main()
{
  fanta a;
  a.r1 = 15;
  a.r2 = 20;
  int b = a.k();
  cout<<b;
  cin.get();
}



Выдаёт ошибку:
 error C2562: 'fanta::k' : 'void' function returning a value


PM MAIL   Вверх
ISergeyN
Дата 6.10.2009, 16:45 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 11.10.2008
Где: Україна

Репутация: 2
Всего: 2



Глаза откройте
Код

#include <iostream>
using namespace std;
class fanta
{
public:
    int r1, r2, rez;
    //void k(); !
   int k();
}
//void fanta::k() !
int fanta::k()
{
    return r1+r2;
}
int main()
{
  fanta a;
  a.r1 = 15;
  a.r2 = 20;
  int b = a.k();
  cout<<b;
  cin.get();
}

PM MAIL Skype   Вверх
Syltan
Дата 6.10.2009, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: -1
Всего: -2



Всё, понял,спасибо всем. То есть, оказывается значения давать, только можно в главной функции main(), а не в классе?

Это сообщение отредактировал(а) Syltan - 6.10.2009, 16:49
PM MAIL   Вверх
niXman
Дата 6.10.2009, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: нет
Всего: 0



Цитата(Syltan @  6.10.2009,  14:49 Найти цитируемый пост)
а не в классе?

И в классе тоже можно, но только через конструктор.

Добавлено через 6 минут и 48 секунд
Либо допиши seter-ы
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
Andrey44
Дата 7.10.2009, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



Код

#include <iostream>
using namespace std;
class fanta
{
    int r1, r2, rez;
public:
   int k();
   void set_values(int val1, int val2){r1 = val1; r2 = val2;}
}
int fanta::k()
{
    return r1+r2;
}
int main()
{
  fanta a;
  a.set_values(15 ,20);
  int b = a.k();
  cout<<b;
  cin.get();
}

Цитата(Syltan @  6.10.2009,  16:45 Найти цитируемый пост)
a.r1 = 15;
  a.r2 = 20;
Очень некрасиво.



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
bsa
Дата 7.10.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Syltan @  6.10.2009,  16:36 Найти цитируемый пост)
Так это с использованием конструкторов, а без использования конструкторов.
Без использования конструктора никак, так как конструктор для того и нужен, чтобы инициализировать переменные класса
Цитата(Syltan @  6.10.2009,  16:36 Найти цитируемый пост)
Просто я читаю книгу,там был пример без конструкторов.
Может там были не переменные, а константы?

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.