2017-03-21 3 views
-3

Was soll ich mit diesem Code tun, der jetzt nicht kompiliert wird? Sollte ich hinzufügen void funccall(const String e);?Überladene virtuelle Funktionswarnung

struct Base 
{ 
    virtual void funccall(const String e = ""); 
}; 

struct Derived: public Base { 
    using Base::funccall; 
    void funccall(); 
    void funccall(char* e, int index); 
}; 
+2

Bitte geben Sie ein [mcve], und wenn Sie Kompilierungsfehler erhalten, auch der vollständige Text dieser Fehler. Wie es ist, wird Ihr Code gut ergänzen. – Angew

+1

Bitte senden Sie die Fehlermeldung oder Warnung. –

+0

Voting zum Schließen, da ohne diese Fehlermeldung diese Frage nicht zu beantworten ist. –

Antwort

-1

Meine Vermutung ist, dass Sie

struct Base 
{ 
    virtual void funccall(const String e = ""){}; 
}; 

Ergänzung zum Beitrag eine rein virtuelle Funktion

struct Base 
{ 
    virtual void funccall(const String e = "")=0; 
}; 

oder definieren einen Körper für diese Methode definieren:

#include "stdafx.h" 
#include <string> 

class base 
{ 
public: 
    virtual void funccall(const std::string e = "") {} 
}; 
class derived : public base 
{ 

    void funccall() {}; 
    void funccall(char *e, int index) {}; 
}; 

int main() 
{ 
    return 0; 
} 
+0

zusätzlich verwende ich Klassen nicht struct. Jedenfalls habe ich versucht, std :: string anstelle von String zu verwenden. Sie müssen einschließen –