2016-06-09 8 views
0

Ich versuche, eine C-Zeichenfolge, die in einer Klasse gespeichert ist, indem Sie den Wert mithilfe einer Accessor-Funktion zurückgegeben.Zurückgeben einer C-Zeichenfolge in einer Klasse gespeichert

Danke für jede Hilfe!

Dies ist der Fehler, den ich bekomme, wenn ich kompilieren:

cstringClass.cpp: In member function 'char Foo::get_name()': 
cstringClass.cpp:37:9: error: invalid conversion from 'char*' to 'char' [-fpermi 
ssive] 
    return name; 
     ^

Hier ist der Code:

#include <iostream> 
#include <cstring> 
using namespace std; 

class Foo 
{ 
    public: 
     void set_name(char a[]); 
     char get_name(); 

    private: 
     char name[10]; 

}; 

int main() 
{ 

    Foo bar; 
    char a[10] = "Test"; 

    bar.set_name(a); 

    cout << bar.get_name(); 


    return 0; 
} 

void Foo::set_name(char a[]) 
{ 
    strcpy(name, a); 
} 

char Foo::get_name() 
{ 
    return name; 
} 

Antwort

1

Wie die Fehlermeldung besagt, gibt Ihre get_name() Funktion den entsprechenden Typ nicht zurück, der char* basierend auf den Daten sein sollte, die name[10] zurückgegeben wird. char gibt nur 1 Datenbyte zurück und name[10] hat 10. Siehe den korrigierten Code unten.

#include <iostream> 
#include <cstring> 
using namespace std; 

class Foo 
{ 
public: 
    void set_name(char a[]); 
    char *get_name(); //<-- correction 

private: 
    char name[10]; 

}; 

int main() 
{ 

    Foo bar; 
    char a[10] = "Test"; 

    bar.set_name(a); 

    cout << bar.get_name(); 


    return 0; 
} 

void Foo::set_name(char a[]) 
{ 
    strcpy(name, a); 
} 

char *Foo::get_name() //<-- correction 
{ 
    return name; 
} 
2

So ist der Fehler sagt:

cstringClass.cpp: In member function 'char Foo::get_name()': 
             ^^^^^^^^^^^^^^^^^^^^ 

Und in der Tat:

 char get_name(); 

Sie haben get_name als Rückgabe eines einzelnen char deklariert, kein Zeiger auf eine Zeichenfolge. Du hast wahrscheinlich char *get_name(); gemeint.

Verwandte Themen