Re: Is finalizing a virtual method possible in C++?
* Kira Yamato:
On 2008-02-22 07:35:34 -0500, Pavel Lepin <p.lepin@ctncorp.com> said:
Kira Yamato <kirakun@earthlink.net> wrote in
<2008022206570016807-kirakun@earthlinknet>:
So, I don't want to say too hestantly that it is
impossible to simulate the finalizing of virtual methods
and classes in C++.
Hence, I rather turn to the experts and ask if anyone
knows if it is possible to simulate them in any way?
This is a FAQ.
<http://www.parashift.com/c++-faq-lite/>
Yes. Thanks. But the FAQ does not say that finalizing method is
impossible. If in fact it did, then the answer is found. Instead, it
just proposes a "solution."
So let me try asking differently, has anyone gotten further with a
better solution than merely stating a comment?
There should be no reason to finalize a member function in C++.
But if you absolutely must it's not that difficult.
class Base
{
friend class Derived;
private:
struct OverrideTag {};
public:
virtual void foo( OverrideTag = OverrideTag() ) = 0;
};
class Derived: public Base
{
public:
virtual void foo( OverrideTag = OverrideTag() ) {}
};
class FurtherDerived: public Derived
{
public:
// Nix njet.
// virtual void foo( OverrideTag = OverrideTag() ) {}
};
int main()
{
Derived o;
o.foo();
}
However, chances are that if you do something like this then you're
thinking in Java, not in C++, using ideas that don't make sense in C++.
Cheers, & hth.,
- Alf
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?