Connecting Tech Pros Worldwide Help | Site Map

Nested Vector Nester Classes are Nested in my Brain

 
LinkBack Thread Tools Search this Thread
  #1  
Old November 8th, 2005, 01:45 AM
Chad E. Dollins
Guest
 
Posts: n/a
Default Nested Vector Nester Classes are Nested in my Brain


Hello someone said that I should check this forum out for help to my c++
problems.

I will admit at this point I may have really ran myself into the ground
with this code that I am writing, but I'm hoping for a little help from
you guys.

I have a class that needs use of a bread-first search of a quareney tree.
In this class I have a nested class that should be the implementation of a
tree that contains two nested classes of its own. Those two classes are a
Position representation of cartestian coordinate with accessors and
modifiers and comparison methods. The other inner class is a treenode
class. This class holds several things, first of all a * to a vector of
TreeNode * that represent children nodes, A Position as its Payload, A *
to the parent TreeNode, and * pointer to a Maze object no mentioned above.

So, my problem is that as I iterate over my children vector I would like
to access the payload members accessors of the current treenode in the
vector. Except I get this instead:
error: request for member `payload' in `
*(&p1)->__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator->
[with _Iterator = cs371p::prog::robowars4::Robot::Tree::TreeNode**,
_Container =
std::vector<cs371p::prog::robowars4::Robot::Tree:: TreeNode*,
std::allocator<cs371p::prog::robowars4::Robot::Tre e::TreeNode*> >]()',
which
is of non-class type `cs371p::prog::robowars4::Robot::Tree::TreeNode*'

The line of code looks like this:
vector< TreeNode *>::iterator p1;
for(p1 = children->begin();p1 != children->end();++p1)
This LINE RIGHT HERE->>>> p1->payload->getX();

Please, lemme know what you think any feed back is appreciated

--Chad

  #2  
Old November 8th, 2005, 02:05 AM
Kai-Uwe Bux
Guest
 
Posts: n/a
Default Re: Nested Vector Nester Classes are Nested in my Brain

Chad E. Dollins wrote:
[color=blue]
>
> Hello someone said that I should check this forum out for help to my c++
> problems.
>
> I will admit at this point I may have really ran myself into the ground
> with this code that I am writing, but I'm hoping for a little help from
> you guys.
>
> I have a class that needs use of a bread-first search of a quareney tree.
> In this class I have a nested class that should be the implementation of a
> tree that contains two nested classes of its own. Those two classes are a
> Position representation of cartestian coordinate with accessors and
> modifiers and comparison methods. The other inner class is a treenode
> class. This class holds several things, first of all a * to a vector of
> TreeNode * that represent children nodes, A Position as its Payload, A *
> to the parent TreeNode, and * pointer to a Maze object no mentioned above.
>
> So, my problem is that as I iterate over my children vector I would like
> to access the payload members accessors of the current treenode in the
> vector. Except I get this instead:
> error: request for member `payload' in `
> *(&p1)->__gnu_cxx::__normal_iterator<_Iterator,
> _Container>::operator->
> [with _Iterator = cs371p::prog::robowars4::Robot::Tree::TreeNode**,
> _Container =
> std::vector<cs371p::prog::robowars4::Robot::Tree:: TreeNode*,
> std::allocator<cs371p::prog::robowars4::Robot::Tre e::TreeNode*> >]()',
> which
> is of non-class type `cs371p::prog::robowars4::Robot::Tree::TreeNode*'
>
> The line of code looks like this:
> vector< TreeNode *>::iterator p1;
> for(p1 = children->begin();p1 != children->end();++p1)
> This LINE RIGHT HERE->>>> p1->payload->getX();[/color]

Try
(*p1)->payload->getX();

Keep in mind: p1 is an iterator; *p1 is the element of the vector it
designates; this element is itself a pointer pointing to some element that
presumably has a member "payload".
[color=blue]
>
> Please, lemme know what you think any feed back is appreciated
>
> --Chad[/color]


Best

Kai-Uwe Bux
  #3  
Old November 8th, 2005, 03:35 AM
Chad E. Dollins
Guest
 
Posts: n/a
Default Re: Nested Vector Nester Classes are Nested in my Brain


Ok same question as before accept this temp trying to call member function
with from an index of the vector<TreeNode * > * myMoves
error ridden code:

myMoves[x]->makeChildren();


On Mon, 7 Nov 2005, Kai-Uwe Bux wrote:
[color=blue]
> Chad E. Dollins wrote:
>[color=green]
>>
>> Hello someone said that I should check this forum out for help to my c++
>> problems.
>>
>> I will admit at this point I may have really ran myself into the ground
>> with this code that I am writing, but I'm hoping for a little help from
>> you guys.
>>
>> I have a class that needs use of a bread-first search of a quareney tree.
>> In this class I have a nested class that should be the implementation of a
>> tree that contains two nested classes of its own. Those two classes are a
>> Position representation of cartestian coordinate with accessors and
>> modifiers and comparison methods. The other inner class is a treenode
>> class. This class holds several things, first of all a * to a vector of
>> TreeNode * that represent children nodes, A Position as its Payload, A *
>> to the parent TreeNode, and * pointer to a Maze object no mentioned above.
>>
>> So, my problem is that as I iterate over my children vector I would like
>> to access the payload members accessors of the current treenode in the
>> vector. Except I get this instead:
>> error: request for member `payload' in `
>> *(&p1)->__gnu_cxx::__normal_iterator<_Iterator,
>> _Container>::operator->
>> [with _Iterator = cs371p::prog::robowars4::Robot::Tree::TreeNode**,
>> _Container =
>> std::vector<cs371p::prog::robowars4::Robot::Tree:: TreeNode*,
>> std::allocator<cs371p::prog::robowars4::Robot::Tre e::TreeNode*> >]()',
>> which
>> is of non-class type `cs371p::prog::robowars4::Robot::Tree::TreeNode*'
>>
>> The line of code looks like this:
>> vector< TreeNode *>::iterator p1;
>> for(p1 = children->begin();p1 != children->end();++p1)
>> This LINE RIGHT HERE->>>> p1->payload->getX();[/color]
>
> Try
> (*p1)->payload->getX();
>
> Keep in mind: p1 is an iterator; *p1 is the element of the vector it
> designates; this element is itself a pointer pointing to some element that
> presumably has a member "payload".
>[color=green]
>>
>> Please, lemme know what you think any feed back is appreciated
>>
>> --Chad[/color]
>
>
> Best
>
> Kai-Uwe Bux
>[/color]
  #4  
Old November 8th, 2005, 04:05 AM
Kai-Uwe Bux
Guest
 
Posts: n/a
Default Re: Nested Vector Nester Classes are Nested in my Brain

Chad E. Dollins wrote:
[color=blue]
>
> Ok same question as before accept this temp trying to call member function
> with from an index of the vector<TreeNode * > * myMoves
> error ridden code:
>
> myMoves[x]->makeChildren();[/color]

You just need to keep track of the types involved:

myMoves is a *pointer* to a *vector* of *pointers*. Thus, first dereference
(now you have a vector) then use the subscript operator (now you have a
pointer), then dereference again to call the member function.

((*myMoves)[x])->makeChildren();


Best

Kai-Uwe Bux
 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

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 On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

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 220,840 network members.