Witam,
Mam w książce tego typu kod:
Plik .h
class Singer
{
protected:
enum { inny, alt, kontralt, sopran, bas, baryton, tenor };
enum { Vtypes = 7 };
private:
static char * pv[ Vtypes ];
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