Help | Site Map
Connecting Tech Pros Worldwide
 
 
LinkBack Thread Tools
  #1  
Old August 16th, 2005, 08:25 PM
Tony Johansson
Guest
 
Posts: n/a
Default problem with multiple inheritance

Hello experts!

I have a small program that is using multiple inheritance.
There are 4 classes involved
I get 4 compile error that I can't figure out why.
It's this row which is located in the main program see below that is causing
these compile errors.
cout << p[i]->getName() << endl;
Here is the first compile error the other might be a consequesce of the
first one.
c:\Documents and Settings\Tony\kau\cplusplus\test4\start.cpp(13): error
C2446: '<' : no conversion from 'std::vector<_Ty>::size_type (__thiscall
std::vector<_Ty>::* )(void) const' to 'int'
with
[
_Ty=Person *
]

Here are all the class definitions
*********************
#include <string>
using namespace std;
class Person
{
public:
Person(string nn = "default") : name(nn) {}
string getName() const
{
return name;
}
private:
string name;
};

class Student : public virtual Person
{
public:
Student(string nn="default") : Person(nn) {}
};

class Employee : public virtual Person
{
public:
Employee(string nn="default") : Person(nn) {}
};

class TeachingAssistent : public Student, public Employee
{
public:
TeachingAssistent(string nn="default") : Person(nn) {}
};

Here is main program
****************
#include <vector>
#include "person.h"
#include <iostream>
using namespace std;

int main()
{
vector<Person *> p;
p.push_back(new Student);
p.push_back(new Employee);
p.push_back(new TeachingAssistent);

for(int i=0; i < p.size; i++)
cout << p[i]->getName() << endl;

return 0;
}

Many thanks

//Tony


  #2  
Old August 16th, 2005, 08:45 PM
Serge Paccalin
Guest
 
Posts: n/a
Default Re: problem with multiple inheritance

Le mardi 16 août 2005 à 21:16:49, Tony Johansson a écrit dans
comp.lang.c++*:
[color=blue]
> Hello experts!
>
> I have a small program that is using multiple inheritance.
> There are 4 classes involved
> I get 4 compile error that I can't figure out why.
> It's this row which is located in the main program see below that is causing
> these compile errors.
> cout << p[i]->getName() << endl;[/color]

Actually, no, it's *this* line:

for(int i=0; i < p.size; i++)
[color=blue]
> Here is the first compile error the other might be a consequesce of the
> first one.
> c:\Documents and Settings\Tony\kau\cplusplus\test4\start.cpp(13): error
> C2446: '<' : no conversion from 'std::vector<_Ty>::size_type (__thiscall
> std::vector<_Ty>::* )(void) const' to 'int'
> with
> [
> _Ty=Person *
> ][/color]

You have a problem with the comparison: (error C2446: '<') because
you're comparing an int (i) with a function pointer (p.size). 'size' is
not a piece of data, but a function; you want this:

for (int i=0; i < p.size(); i++)
[color=blue]
>
> for(int i=0; i < p.size; i++)
> cout << p[i]->getName() << endl;[/color]


--
___________ 16/08/2005 21:29:42
_/ _ \_`_`_`_) Serge PACCALIN -- sp ad mailclub.net
\ \_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
  #3  
Old August 16th, 2005, 08:45 PM
Victor Bazarov
Guest
 
Posts: n/a
Default Re: problem with multiple inheritance

Tony Johansson wrote:[color=blue]
> [...]
> for(int i=0; i < p.size; i++)[/color]

If you intend to find the size of the vector, you need to _call_ the
function 'size'. For that you need to supply the parentheses:

... i < p.size() ...
[color=blue]
> cout << p[i]->getName() << endl;
>
> return 0;
> }[/color]

V
  #4  
Old August 16th, 2005, 08:45 PM
Ruwen Schnabel
Guest
 
Posts: n/a
Default Re: problem with multiple inheritance

Hi,

your problem is not related to multiple inheritance at all. The problem is
that you forgot the brackets behind the function call p.size() in the for
loop.

Greetings,
Ruwen

"Tony Johansson" <johansson.andersson@telia.com> schrieb im Newsbeitrag
news:BYqMe.31661$d5.185135@newsb.telia.net...[color=blue]
> Hello experts!
>
> I have a small program that is using multiple inheritance.
> There are 4 classes involved
> I get 4 compile error that I can't figure out why.
> It's this row which is located in the main program see below that is
> causing these compile errors.
> cout << p[i]->getName() << endl;
> Here is the first compile error the other might be a consequesce of the
> first one.
> c:\Documents and Settings\Tony\kau\cplusplus\test4\start.cpp(13): error
> C2446: '<' : no conversion from 'std::vector<_Ty>::size_type (__thiscall
> std::vector<_Ty>::* )(void) const' to 'int'
> with
> [
> _Ty=Person *
> ]
>
> Here are all the class definitions
> *********************
> #include <string>
> using namespace std;
> class Person
> {
> public:
> Person(string nn = "default") : name(nn) {}
> string getName() const
> {
> return name;
> }
> private:
> string name;
> };
>
> class Student : public virtual Person
> {
> public:
> Student(string nn="default") : Person(nn) {}
> };
>
> class Employee : public virtual Person
> {
> public:
> Employee(string nn="default") : Person(nn) {}
> };
>
> class TeachingAssistent : public Student, public Employee
> {
> public:
> TeachingAssistent(string nn="default") : Person(nn) {}
> };
>
> Here is main program
> ****************
> #include <vector>
> #include "person.h"
> #include <iostream>
> using namespace std;
>
> int main()
> {
> vector<Person *> p;
> p.push_back(new Student);
> p.push_back(new Employee);
> p.push_back(new TeachingAssistent);
>
> for(int i=0; i < p.size; i++)
> cout << p[i]->getName() << endl;
>
> return 0;
> }
>
> Many thanks
>
> //Tony
>
>[/color]


 

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles