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

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

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

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

19.03.2012, 04:59. Просмотров 551. Ответов 4
Метки нет (Все метки)

Доброе время суток, товарищи!
Застрял на ошибке: " 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*' 
 
                  {....};
   
   ............
   ............
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2012, 04:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 'const char* ...' does not much 'const char*' ??? (C++):

Чем отличаются объявления const char* и const* char - C++
Прошу объяснить мне, чем отличаются объявления const char* и const* char и как объявить: указатель на константный массив символов, ...

Error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]" - C++
Вроде все правильно а все равно не работает. Подскажите в чем ошибка #include &lt;iostream&gt; template&lt;typename T&gt; inline const T...

char operator[](unsigned short offset) const; // что означает const? - C++
Собстенно вопрос уже озвучен :).

Ошибка: Cannot convert 'char const[18]' to 'const wchar_t *' - C++
Unit1.cpp(59): E2034 Cannot convert 'char const' to 'const wchar_t *' Full parser context Unit1.cpp(55): parsing: void _fastcall...

Cannot convert 'const wchar_t *' to 'const char *' - C++
HMODULE hMod=GetModuleHandle(NULL); if(!hMod) { } HRSRC hRes=FindResource(hMod,&quot;acc.dll&quot;,RT_RCDATA); if(!hRes){ } HGLOBAL...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' - C++
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void crpost(const statep &amp;struc1) { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
19.03.2012, 05:34 #2
Смысла в коде я вообще не вижу. Вот нафиг публичные set/get методы возвращают указатели на закрытые данные??? В чём тогда смысл объявлять их как закрытые. Во-вторых, код приведён не полностью и нельзя сказать почему компилятор ругается в этом месте. Вот что я думаю по поводу этой строки
C++
1
strcmp(b,(*fi)[i].ob1->get_name) && strcmp(a,(*fi)[i].ob1->get_surname)
здесь зачем-то указатель *fi занесён в скобки, это по-моему не нужно, компилятор/программист это может расценить как приведение типа или вызов функции. Далее функции get_name по типу возвращаемого значения должны возвращать константный указатель, однако эти функции возвращают НЕ константный указатель
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
19.03.2012, 05:50 #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()))
2
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
19.03.2012, 11:21 #4
Цитата Сообщение от Toshkarik Посмотреть сообщение
И почему вы пишите на C++ и используете строки в стиле C, когда есть стандартный класс string?
наверно в том и смысл задания, чтобы обойтись без string
0
Kopish32
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 7
19.03.2012, 15:00  [ТС] #5
"Смысла в коде я вообще не вижу. Вот нафиг публичные set/get методы возвращают указатели на закрытые данные??? В чём тогда смысл объявлять их как закрытые."

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

На все остальные, имеющиеся сейчас, вопросы по поводу задания правильно ответили Toshkarik и panicwassano )))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2012, 15:00
Привет! Вот еще темы с ответами:

Работа со строками - Invalid conversion from 'char' to 'const char*' - C++
#include &lt;iostream&gt; #include &lt;ctype.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; using namespace std; void poisk(int n, char...

Error: incompatible types in assignment of 'const char [5]' to 'char [10]' - C++
Код: #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; const int m = 10; class name {

[Ошибка] invalid conversion from 'const char*' to 'char*' [-fpermissive] - C++
Решал задачи сам по себе, наткнулся на очень интересную. Вот сама задача: Вы оператор пуска ракет на ядерном подводном ...

Ошибка invalid conversion from 'const char*' to 'char*' - C++
Я в С++ новенький. Поэтому опыта еще нет, да и знаний мало. ПОдскажите пожалуйста, чего вылетает ошибка invalid conversion from 'const...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.03.2012, 15:00
Ответ Создать тему
Опции темы

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