Your class contains a member vector<Card> object, but new vector<Card> returns a vector* pointer to an object. You can't assign a vector* pointer to a vector object.
Nor do you need to. vector implements a default constructor, so your setOfCards member will be constructed automatically when the compiler enters your constructor.
That being said, your constructor is ignoring its input parameters. The statements this->numCards; and this->maxSpend; are no-op's.
The code should look more like this instead:
class Collection{
private:
vector<Card> setOfCards;
int numCards;
int maxSpend;
public:
Collection(int numCards, int maxSpend){
// setOfCards has already been constructed by this point!
this->numCards = numCards;
this->maxSpend = maxSpend;
}
Or, using a member initialization list:
class Collection{
private:
vector<Card> setOfCards;
int numCards;
int maxSpend;
public:
Collection(int numCards, int maxSpend) :
/* setOfCards() is called implicitly here, */
numCards(numCards),
maxSpend(maxSpend)
{
// setOfCards has been constructed by this point!
}
See Constructors and member initializer lists for more details.