technique for assure, that a function is overwritten in c++??
-
hy, i have a virtual function in a class. i must go sure, that every class who is inherited from this class overwrites this function, otherwise a warning shoud occur at runtime, or something like that. is this possible?? thanx andreas
-
hy, i have a virtual function in a class. i must go sure, that every class who is inherited from this class overwrites this function, otherwise a warning shoud occur at runtime, or something like that. is this possible?? thanx andreas
in the base class make the functino pure virtual like virtual void somefunction() = 0; //pure virtual function. this ensures that the derived class has to override/implement the method.
-
in the base class make the functino pure virtual like virtual void somefunction() = 0; //pure virtual function. this ensures that the derived class has to override/implement the method.
yes, but i need a technique, who workes also when i derive a class from a derived class and so on! is there any trick?
-
yes, but i need a technique, who workes also when i derive a class from a derived class and so on! is there any trick?
Please do read about pure virtual function.
-
Please do read about pure virtual function.
yes, but what, if i make a pure virtual function (abstract class) then derive a class from it, and implement this function. now i derive a class from this class, and forget to overwritte this function, how will i know?
-
yes, but what, if i make a pure virtual function (abstract class) then derive a class from it, and implement this function. now i derive a class from this class, and forget to overwritte this function, how will i know?
It will cause a compile error. Robert-Antonio "CRAY is the only computer, which runs an endless loop in just 4 hours"
-
It will cause a compile error. Robert-Antonio "CRAY is the only computer, which runs an endless loop in just 4 hours"
It doesnt for the second derivation.
-
yes, but what, if i make a pure virtual function (abstract class) then derive a class from it, and implement this function. now i derive a class from this class, and forget to overwritte this function, how will i know?
If you derive the class from CObject in MFC then i guess you can use the RTTI to determine which object's method is called and then generate the error accordingly.
-
It will cause a compile error. Robert-Antonio "CRAY is the only computer, which runs an endless loop in just 4 hours"
there is no complie error(on the 2th. deriv)!!! is there any trick, or technique, that could give me a compile error?
-
If you derive the class from CObject in MFC then i guess you can use the RTTI to determine which object's method is called and then generate the error accordingly.
so it would be possible that, whenever someone is calling the function, who is not overwritten (and therefore the one of the superclass is called) it throws an error? that would be grat!
-
so it would be possible that, whenever someone is calling the function, who is not overwritten (and therefore the one of the superclass is called) it throws an error? that would be grat!
Maybe some light. Any function has its start address. So you can check whether the start address of the function in the derived class is the same as the address of the function in the super class itself. If so, you could fault on runtime. It has some difficulties, and some knowledge of vtables seem to be handy here, but I think it is in the direction you should be thinking. LPCTSTR Dutch = TEXT("Double Dutch :-)");
-
hy, i have a virtual function in a class. i must go sure, that every class who is inherited from this class overwrites this function, otherwise a warning shoud occur at runtime, or something like that. is this possible?? thanx andreas
No. This is a very serious design flaw in C++. (It gets worse. Say you created a function of the same name in the inherited class, but very slightly changed one of the parameters. You're screwed.) Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke