Zwei gleiche Prototypen erben [geschlossen]
Posted: 20 Jan 2025, 17:24
Ich erbe eine Legacy-Klasse, die ich aus technischen Gründen nicht ändern kann, und diese Legacy-Klasse erbt zweimal dieselbe Vorlage. (Ich weiß, es ist falsch formatiert als f..., aber Legacy-Code, wissen Sie)
Beachten Sie, dass „BindA“ und „BindB" sind vom Datentyp SAME.
Ich muss beide „get“-Methoden überschreiben, also habe ich die folgende Klasse erstellt.
Hier ist das Problem:
Ich verwende den IAR-Compiler und er schlägt aus folgenden Gründen fehl Fehler:
Ist es möglich, dieses Erbe zu verwalten?
Ich habe Zweifel.
Beachten Sie, dass „BindA“ und „BindB" sind vom Datentyp SAME.
Code: Select all
class Legacy : public Template,
public Template
{
public:
Legacy(...);
virtual ~TransformerRatioUpdater();
// inherited from Template
virtual bool set(BindA const& rData);
virtual bool get(BindA & rData) const;
// inherited from Template
virtual bool set(BindB const& rData);
virtual bool get(BindB& rData) const;
private:
...
};
Code: Select all
class MyClass: public Legacy
{
public:
MyClass(...);
bool get(BindA& rData) const override;
bool get(BindB& rData) const override;
virtual ~MyClass();
private:
typedef Legacy super;
};
Ich verwende den IAR-Compiler und er schlägt aus folgenden Gründen fehl Fehler:
Code: Select all
bool get(BindA& rData) const override;
^
"MyClass.hpp",31 Warning[Pe997]: function "Template::get(T &) const [with T=BindA]" is hidden by "MyClass::get" -- virtual function override intended?
bool get(BindB& rData) const override;
^
"MyClass.hpp",32 Warning[Pe997]: function "Template::get(T &) const [with T=BindB]" is hidden by "MyClass::get" -- virtual function override intended?
Ich habe Zweifel.