【发布时间】:2017-04-05 07:22:53
【问题描述】:
我有 Game 类的构造函数,它定义了一个 Deck。 Game.cpp:
Game::Game(char*configurationFile):turn(0), playingPlayer(0)
{
vector<Card*> vec;
deck(vec);
initialState ="";
}
Game.h:
private:
Deck deck;
和 Deck 的构造函数:
Deck::Deck(vector <Card*> vec):deck(vec), NumOfCard(vec.size()){}
当然它只是代码的一部分,但我不断收到错误:
对“(Deck) (std::vector&)”的调用不匹配
在线:deck(vec);
我不明白为什么。感谢大家的帮助!
【问题讨论】:
-
好吧,
deck(vec)不是构造函数调用。甚至不在以deck作为子对象的对象的构造函数中。这就是 ctor-initializer-list(您已经拥有)的用途。 -
对,如果你想要的话,你应该有
deck =vec;而不是deck(vec); -
@BenVoigt 所以请帮助我。我不明白,我该怎么写?
-
恐怕是时候打开课本开始阅读了,Kiprin。您似乎继承了您不理解的代码,也不理解所提供的正确解决方案。这表明在有人向您提供更多您不理解的代码之前应该填补信息空白。
-
@marcinj:这仍然是错误的。如果要初始化
deck,则必须在构造函数的成员初始化列表中写入deck(vec)。否则,您所做的只是事后分配。
标签: c++ pointers object vector constructor