Simple vector question

YourFace

<span style="color:#9C9C9C;"><strong>Runner Up - T
Reaction score
91
Code:
void Follower::set_last_follower(std::vector<Follower*> last_follower)
{
	for(int i = 0; i < last_follower->size(); i++)
	{
		last_follower[i]->lastfollower = false;
	}
	int b = last_follower->size() -1;
	last_follower[b]->lastfollower = true;
}

how do i fix this error:
error C2819: type 'std::vector<_Ty>' does not have an overloaded member 'operator ->'
1> with
1> [
1> _Ty=Follower *
1> ]
1> did you intend to use '.' instead?

Follower is a class with a bool lastfollower.
 

camelCase

The Case of the Mysterious Camel.
Reaction score
362
Look at this line:
Code:
	for(int i = 0; i < last_follower->size(); i++)

last_follower->size(), specifically.
You can only use "last_follower.size()" because you took a "std::vector<Follower*>" as your argument.
You're passing by value here, not by pointer.

[EDIT]
You might want to pass by reference here or the code will get funny =/
Code:
//Passing by pointer
void Follower::set_last_follower(std::vector<Follower*> *last_follower)
{
	for(int i = 0; i < last_follower->size(); i++)
	{
		(*last_follower)[i]->lastfollower = false;
	}
	int b = last_follower->size() -1;
	(*last_follower)[b]->lastfollower = true;
}
Code:
//Passing by reference
void Follower::set_last_follower(std::vector<Follower*> &last_follower)
{
	for(int i = 0; i < last_follower.size(); i++)
	{
		last_follower[i]->lastfollower = false;
	}
	int b = last_follower->size() -1;
	last_follower[b]->lastfollower = true;
}

I may or may not have screwed up a bit
 

s3rius

Linux is only free if your time is worthless.
Reaction score
130
Code:
//Passing by reference
void Follower::set_last_follower(std::vector<Follower*> &last_follower)
{
	for(int i = 0; i < last_follower.size(); i++)
	{
		last_follower[i].lastfollower = false;
	}
	int b = last_follower.size() -1;
	last_follower[b].lastfollower = true;
}

When passing a reference or an object you use the dot-operator.
When passing a pointer you use the arrow-operator.
 

camelCase

The Case of the Mysterious Camel.
Reaction score
362
I'm pretty sure that this: last_follower
Returns a pointer to class Follower.

To access Follower's members, you'd have to use the -> operator
 

s3rius

Linux is only free if your time is worthless.
Reaction score
130
You're right, sorry.

Has to be like this:

Code:
//Passing by reference
void Follower::set_last_follower(std::vector<Follower*> &last_follower)
{
	for(int i = 0; i < last_follower.size(); i++)
	{
		last_follower[i]->lastfollower = false; //here arrow, pointer to Follower
	}
	int b = last_follower.size() -1; //Here dot, reference to vector
	last_follower[b]->lastfollower = true; //Here arrow, pointer to Follower
}
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top