首页 > 解决方案 > 关于在具有结构成员的类中使用模板的问题

问题描述

我正在尝试创建一个类 ( myClass),该类 () 具有一个私有成员 ( Elements),它是 的向量myStructmyStruct是一个使用模板来定义其成员的结构val。我收到一个错误:

error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::vector’
   vector<myStruct> Elements;

这表示存在不匹配。任何帮助表示赞赏。

#include <iostream>
#include <vector>

using namespace std;

template <class T>
struct myStruct {
  int i; 
  int j; 
  T val; 
};


class myClass {
  public:

  int m; 
  int n; 
  int num;
  vector<myStruct> Elements;

  private:

  SparseMatrix(int _m, int _n, int _num) : m(_m),  n(_n), num(_num) {
    this->Elements.resize(this->num);
  }
};

error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::vector’
   vector<myStruct> Elements;

标签: c++classtemplates

解决方案


正如@1201ProgramAlarm 所述,错误来源是未给出 myStruct 的类型参数。更正后的代码:

#include <iostream>
#include <vector>

using namespace std;

template <class T>
struct myStruct {
  int i; 
  int j; 
  T val; 
};

template<class T>
class myClass {
  public:

  int m; 
  int n; 
  int num;
  vector<myStruct<T> > Elements;

  private:

  SparseMatrix(int _m, int _n, int _num) : m(_m),  n(_n), num(_num) {
    this->Elements.resize(this->num);
  }
};

祝你好运!


推荐阅读