Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Błąd kompliacji error: conflicting declaration ‘const char* Singer::pv []

Ostatnio zmodyfikowano 2013-12-03 11:06
Autor Wiadomość
maf2
Temat założony przez niniejszego użytkownika
[C++] Błąd kompliacji error: conflicting declaration ‘const char* Singer::pv []
» 2013-12-03 11:06:00
Witam,
Mam w książce tego typu kod:
Plik .h
C/C++
class Singer
{
protected:
    enum { inny, alt, kontralt, sopran, bas, baryton, tenor };
    enum { Vtypes = 7 };
   
private:
    static char * pv[ Vtypes ]; // odpowiednik typu głosu w postaci ciągu znaków
    int voice;
   
};

Plik .cpp

const char * Singer::pv[] = { "inny", "alt", "kontralt", "sopran", "bas", "baryton", "tenor" };

Otrzymuję taki komunikat:

worker0.cpp:48:25: error: conflicting declaration ‘const char* Singer::pv []’
 const char * Singer::pv[] = {"inny", "alt", "kontralt", "sopran", "bas", "baryton", "tenor"};
                         ^
In file included from worker0.cpp:1:0:
worker0.h:48:18: error: ‘Singer::pv’ has a previous declaration as ‘char* Singer::pv [7]’
     static char *pv[Vtypes]; // odpowiednik typu głosu w postaci ciągu znaków
                  ^
worker0.cpp:48:25: error: declaration of ‘char* Singer::pv [7]’ outside of class is not definition [-fpermissive]
 const char * Singer::pv[] = {"inny", "alt", "kontralt", "sopran", "bas", "baryton", "tenor"};
                         ^
worker0.cpp:48:92: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
 const char * Singer::pv[] = {"inny", "alt", "kontralt", "sopran", "bas", "baryton", "tenor"};
                                                                                            ^
worker0.cpp:48:92: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
worker0.cpp:48:92: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
worker0.cpp:48:92: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
worker0.cpp:48:92: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
worker0.cpp:48:92: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
worker0.cpp:48:92: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

Już sobie poradziłem. Po prostu jest błąd w książce. Jest przecież
static char * pv[ Vtypes ];
 a powinno być 
static const char * pv[ Vtypes ];
. Brakuje const. Prosta sprawa a jak się człowiek zasugeruje to nie widzi :D
P-98154
« 1 »
  Strona 1 z 1