【问题标题】:Too few template arguments error while trying to pass a list of pointers as a parameter?尝试将指针列表作为参数传递时模板参数太少?
【发布时间】:2015-05-31 21:07:21
【问题描述】:

我已经创建了这个“社交名流”课程和一个单独的“派系”课程。 Socialite 对象的参数之一是指向“Factions”的指针向量。我之前使用过没有“派系列表”作为参数的 Socialite 类,它运行良好。

class Socialite
{
public:

 Socialite();
 Socialite(string lastName, string firstName, string userId, string picture, string website, string description, list<Faction*> factionlist);

 //other methods

 void newSocialite(string lastName, string firstName, string userId, string picture, string website, string description, list<Faction*> factionlist);
 void deleteSocialite(string lastName, string firstName, string userId, string picture, string website, string description, list<Faction*> factionlist);

 //other methods

private:

 string lastName_;
 string firstName_;
 string userId_;
 string picture_;
 string website_;
 string description_;

 vector<Socialite *> socialiteptr_;
 list<Faction*> factionlist_;



};

但是,当我包含它时,我得到了错误:

 error C2976: 'std::list' : too few template arguments  

 error C2065: 'Faction' : undeclared identifier 

每次我的方法/构造函数包含派系列表时,都在同一行。我查找的解决方案涉及使用模板的代码,我没有使用任何模板,所以我不明白出了什么问题。

额外信息:我的指针向量是这样存储的:

 vector<Faction *> factionptr_;

我以这样的方式将其列在列表中:

 list<Faction*> list_factions(factionptr_.begin(), factionptr_.end());

我做错了什么?

【问题讨论】:

  • "'Faction' : undeclared identifier" 是你的问题。编译器不知道Faction 是什么。如果您在其他类声明之前转发声明 class Faction;,很可能会解决问题。
  • @WojtekSurowka 谢谢,我会试试这个。

标签: c++ list class pointers vector


【解决方案1】:

正如@Wojtek Surowka 所说,您可以转发声明class Faction

class Faction;

class Socialite
{
...
}

或者您可以包含带有Faction 声明的头文件(如果FactionFraction.h 文件中声明):

#include "Faction.h"

class Socialite
{
...
}

但在这种情况下,Faction.h 不应包含带有 Socialite 类的标头。

【讨论】:

    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多