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

Проблема с методом класса(наверное) - C++

Восстановить пароль Регистрация
 
Dz_ViTo
 Аватар для Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
26.07.2011, 21:30     Проблема с методом класса(наверное) #1
Есть вот такой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
using namespace std;
 
class One{
  int iclOne;
  float fclOne;
  char* chclOne;
  public:
    One(): iclOne(0), fclOne(0), chclOne(NULL){} 
    int getiOParam(){return iclOne;}
    float getfOParam(){return fclOne;}
    char* getchOParam(){return chclOne;}
    int givOParam(int Var, float Far, char* Char);
    void Show();
};
int One::givOParam(int Var, float Far, char* Char){
  iclOne = Var;
  fclOne = Far;
  chclOne = new char[strlen(Char)+1];
  strcpy(chclOne, Char);
}
void One::Show(){
  cout<< "Enter \n"<<iclOne<< " "<< fclOne<< " "<< chclOne<< endl;
}
 
//===Главная ф-я===
int main(){
  One A;
  A.Show();
  A.givOParam(2, 3.4, "Hello world!");
  A.Show();
  return 1;
}
Суть в том что работает прога до A.givOParam(2, 3.4, "Hello world!") а потом попросту слетает. В чем дело?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
26.07.2011, 22:04     Проблема с методом класса(наверное) #2
функция givOParam должна целочисленное значение, а вы не возвращаете ничего
Dz_ViTo
 Аватар для Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
26.07.2011, 22:16  [ТС]     Проблема с методом класса(наверное) #3
к сожалению это не решило проблемы =(
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
26.07.2011, 22:43     Проблема с методом класса(наверное) #4
все дело в том что вы пытаетесь вывести на экран нуленный указатель, тоесть программа вылетала при первом вызове Show
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <cstring>
 
using namespace std;
 
class One {
    int iclOne;
    float fclOne;
    char* chclOne;
public:
    One() : iclOne(0), fclOne(0), chclOne(0) 
    {} 
 
    ~One()
    {
        delete [] chclOne;
    }
    
    int getiOParam()
    {
        return iclOne;
    }
    
    float getfOParam()
    {
        return fclOne;
    }
 
    const char const* getchOParam()
    {
        return chclOne;
    }
    
    void givOParam(int Var, float Far, const char* Char);
   
    void Show()
    {
        cout<< "Enter \n"<< iclOne << ' ' << fclOne<< ' ' << chclOne << endl;
    }
};
 void One::givOParam(int Var, float Far, const char* Char)
{
    iclOne = Var;
    fclOne = Far;
    chclOne = new char[strlen(Char)+1]();
    strcpy(chclOne, Char);
}
 
int main()
{
    One A;
   
    A.givOParam(2, 3.4f, "Hello world!");
    A.Show();
    return 0;
}
Dz_ViTo
 Аватар для Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
26.07.2011, 22:49  [ТС]     Проблема с методом класса(наверное) #5
Точно =)
спасибо
Yandex
Объявления
26.07.2011, 22:49     Проблема с методом класса(наверное)
Ответ Создать тему
Опции темы

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