Je veux faire ce qui suit:C++ hérite d'une classe de base virtal
class ErrorBase
{
public:
void SetError(unsigned errorCode)
{
mErrorCode = errorCode;
}
char const* Explanation(unsigned errorCode) const
{
return errorExplanations[errorCode];
}
private:
char const* errorExplanations[];
unsigned mErrorCode;
};
class MyError : virtual public ErrorBase
{
public:
enum ErrorCodes {
eNone,
eGeneric,
eMySpecificError
};
MyError()
{
// I want this to refer to the parent class's attribute,
// such that when Explanation() is executed, it uses this
errorExplanations = {
"no error",
"error in MyClass",
"specific error"
}
}
~MyError() { }
};
Mais je reçois l'erreur suivante sur la ligne déclarant errorExplanations
dans la classe des enfants:
error: expected primary-expression before '{' token
Comment puis-je déclarer errorExplanations
dans la classe enfant de telle sorte que je peux instancier un enfant, et appeler myChild.Explanation()
et obtenir l'une des chaînes d'erreur définies dans le constructeur de l'enfant?
Toutes les suggestions/corrections concernant mon utilisation de const
, virtual
, public
, etc sont appréciés, Merci!
sans rapport avec l'héritage virtuel –