Re: base classes and inheritance problem
* zionztp@gmail.com:
Hello, considering this code:
class A {
protected:
int n;
};
class B : public A {
public:
void setn(int k){ n = k;}
};
int main()
{
A *c;
c = new B();
c->setn(10);
return 0;
}
This of course will not compile, i'm trying to avoid using virtual
functions in class A and i was wondering if there exist a way of
achieving something like this code.
Since you're wondering about that, and also since you're considering leaving a
data member uninitialized for some time, and also since you're considering a
setter function for that data member, chances are near 100% that you're
relatively (understatement) new to the language and have embarked on a journey
of Evil Premature Optimization, which, if you continue, will lead to much grief.
What do your measurements say about the impact of virtual functions?
Aha, no measurements!
Well, there you are, it's a case of severe, evil premature optimization.
Here's one way to do things more properly:
class A
{
private:
int myN;
public:
A( int n ): myN( n ) {}
int n() const { return myN; }
};
class B: public A
{
public:
B( int n ): A( n ) {}
};
int main()
{
B c; // And yes, that's it, all you have to do.
}
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?