Re: virtual operator +
On Sep 12, 7:15 pm, "Alf P. Steinbach" <al...@start.no> wrote:
* Hunk:
I ws wondering if there is a way to implement operator+ in case of
virtual classes.
You mean polymorphic classes.
Yes
Here's the problem. I have to have a base string class from which two
classes (normal char string and a hash string class ) are derived. The
two derived classes are template classes specifying the sizes. The
base class is a non-template class so that it can be used generically
in the interface classes. the design would look like
class Base_string {
};
template<size>
class Char_string : Base_string {
};
template<size>
class Hash_string: Base_string{
};
Did you really mean to have private inheritance here?
No its a public inheritance , ergo a typo
It could be the Right Thing to do, but then in conjunction with some
other way to convert up to Base_string.
So that in the interface class of the application he can use just the
generic Base_string to access the functions and doesnt have to know
whether its a Char or hash string
The issue is in implementing the operator+ . Since all the methods are
virtual in the base class and it should call the desired methods
polymorphically, operator+ is a challenge as it returns a Base_string
object
So if I have something like
Char_string<24> char_string1("Hello");
Char_string<24> char_string2("world");
Char_string<24> char_result;
Base_string* base_a = &char_string1;
Base_string* base_b = &char_string2;
Base_string* base_r = &char_result;
i wouldnt be able to do
*base_r = *base_a + *base_b; as the operator+ would return a
Base_object?
If operator+ returns a Base_string, then assignment of the result to
Base_string (provided there is an accessible assignment operator) works.
It doesnt work in case of virtual as return of operator is by value
(shown below )
Base_string operator + (const Base_string& p_string_r) const
{
Base_string temp_str = *this;
temp_str.append(p_string_r.get_string()); //
return temp_str; // the value would be lost
}
Any soultions to the above issue is most welcome
What's the problem?
And why are you talking about using a virtual operator+?
Hope you got it now... in the first post i have specified the design
of the class
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?- Hide quoted text -
- Show quoted text -- Hide quoted text -
- Show quoted text -