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

'const char* ...' does not much 'const char*' ??? - C++

Восстановить пароль Регистрация
 
Kopish32
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 7
19.03.2012, 04:59     'const char* ...' does not much 'const char*' ??? #1
Доброе время суток, товарищи!
Застрял на ошибке: " error: argument of type ‘const char* (person::)()’ does not match ‘const char*’ "
(ниже в коде выделена)
Как я предполагаю все дело в возврате функций "get_name" и "get_surname" (но не уверен)

Заранее извиняюсь за количество кода(


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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
class person {
    private:
     char *surname;
     char *name;
   
      public:        
    person (char* sur,char* n) {
            surname=new char[strlen(sur)+1];
        strcpy(surname, sur);
        name=new char[strlen(n)+1];
        strcpy(name,n);
        }
       
    ~person () {
        delete[] surname;
        delete[] name;
        }
 
            const char* get_name() 
               {
                return name;
                }
           const char* get_surname()
                {
                return surname;
        }
    };
        
 
class acc{
    private:
    int data_cr[3];
    double sum;
        info *t_inf[];
    
    public:
    person *ob1;
    void Set_Elem(int d, int m, int y, double s,char* sur,char* n) 
       {
            
            data_cr[0]=d;
        data_cr[1]=m;
        data_cr[2]=y;
        sum=s;
        ob1= new person (sur,n);  
           
           }                      
    };
    
int main()
{ char f;
  int d,m,y,i,ig=0;
  char *a,*b;
  double s;
  
  acc *fi[20];
for(;;)
{
  cout<<" << Want to create an account?  (Y/n)"<<endl;        
  cin>>f;
  if(f=='Y' || f=='y')
      { a=new char[24];
        b=new char[15];
        cout<<endl<<endl<<" << Your name : "<<endl<<" >> ";
        cin>>b;
        cout<<endl<<" << Surname : "<<endl<<" >> ";
        cin>>a;
        cout<<endl<<" << What's the date? : "<<endl<<" << Day : "<<endl<<" >> ";
        cin>>d;
        cout<<endl<<" << Month : "<<endl<<" >> ";
        cin>>m;
        cout<<endl<<" << Year : "<<endl<<" >> ";
        cin>>y; 
        
        fi[ig]=new acc();
        fi[ig]->Set_Elem(d,m,y,0,a,b);
        
       cout<<endl<<" << Congratulations,"<<b<<" "<<a<<",account was created!"<<endl;    
        
        //delete []a;
        //delete []b;
      }
 
        cout<<"Have an acount? (Y/n) "<<endl<<" >> "; 
        cin>>f;
        if(f=='Y' || f=='y')
            {//a=new char[24];
             //b=new char[15];
             cout<<endl<<" << Please, log in. "<<endl<<"Name"<<endl<<" >> ";
             cin>>b;
             cout<<endl<<" << Surname : "<<endl<<" >> ";
             cin>>a;
          
           for(i=0; i<=ig; i++)
           if(strcmp(b,(*fi)[i].ob1->get_name) && strcmp(a,(*fi)[i].ob1->get_surname))   //Ошибка в этой строке 
               // error: argument of type ‘const char* (person::)()’ does not match ‘const char*' 
 
                  {....};
   
   ............
   ............
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
19.03.2012, 05:34     'const char* ...' does not much 'const char*' ??? #2
Смысла в коде я вообще не вижу. Вот нафиг публичные set/get методы возвращают указатели на закрытые данные??? В чём тогда смысл объявлять их как закрытые. Во-вторых, код приведён не полностью и нельзя сказать почему компилятор ругается в этом месте. Вот что я думаю по поводу этой строки
C++
1
strcmp(b,(*fi)[i].ob1->get_name) && strcmp(a,(*fi)[i].ob1->get_surname)
здесь зачем-то указатель *fi занесён в скобки, это по-моему не нужно, компилятор/программист это может расценить как приведение типа или вызов функции. Далее функции get_name по типу возвращаемого значения должны возвращать константный указатель, однако эти функции возвращают НЕ константный указатель
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
19.03.2012, 05:50     'const char* ...' does not much 'const char*' ??? #3
И почему вы пишите на C++ и используете строки в стиле C, когда есть стандартный класс string?
Цитата Сообщение от Buckstabue Посмотреть сообщение
функции возвращают НЕ константный указатель
Возвращают они константный указатель.

Добавлено через 8 минут
get_name это функция, а вызов функции производится с скобками.
C++
1
if(strcmp(b,(*fi)[i].ob1->get_name()) && strcmp(a,(*fi)[i].ob1->get_surname()))
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
19.03.2012, 11:21     'const char* ...' does not much 'const char*' ??? #4
Цитата Сообщение от Toshkarik Посмотреть сообщение
И почему вы пишите на C++ и используете строки в стиле C, когда есть стандартный класс string?
наверно в том и смысл задания, чтобы обойтись без string
Kopish32
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 7
19.03.2012, 15:00  [ТС]     'const char* ...' does not much 'const char*' ??? #5
"Смысла в коде я вообще не вижу. Вот нафиг публичные set/get методы возвращают указатели на закрытые данные??? В чём тогда смысл объявлять их как закрытые."

Ф-методы get_name и get_surname ,были упрощенны специально (чтобы не выкладывать 300 строк кода)
также по этому упрощена и неполна сама программа
set -у меня вообще ничего не возвращает (его в коде нет!)

На все остальные, имеющиеся сейчас, вопросы по поводу задания правильно ответили Toshkarik и panicwassano )))
Yandex
Объявления
19.03.2012, 15:00     'const char* ...' does not much 'const char*' ???
Ответ Создать тему
Опции темы

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