首页 > STL编程 > type/value mismatch at argument 1

type/value mismatch at argument 1

[CSDN答题总结]最近又开始出没于CSDN,看到网友问到STL的提问,而正好自己也在看STL,所以就回答有关STL的问题:

问:关于C++ STL运用的问题。求高手解答下
是关于一个STL运用的问题,有一个模板类,为

template <class T>
class Word
{
private:
	vector <T> vec;
	//.....
};
class Code
{
private:
	vector <Word> code;//问题在这里。错误显示是 type/value mismatch at argument 1 in  
	//template parameter list for `template<class _Tp, class _Alloc> class std::vector'  
public:
	Code(){}
	//.............
};
int main()
{
	Code c;
	Codeword<class T> fc;  
	int p,m,n;
	cin >> p;
	cin >> n;
	cin >>m;   
	for(int i =0;i<n;i++)
		fc.Add(Mint(0));

	fc.weight();
	c.Add(fc); // 这里也会出错。说无法找到函数。在Code类里。
}
//请高手帮忙指导下吧。谢谢了。

我的回答:
你定义的是一个类模板,使用的时候必须加上参数类型,就想你使用vector的时候,不能这么定义变量是吧:

vector v;  //错误
vector<int> v; //OK

所以你的类Code里面使用Word的时候,也给定参数类型,你现在应该还不知道需要什么类型,所以又要引入template,所以Code类也应该是一个类模板:

template<class T>   //加上模板
class Code
{
private:
    vector<Word<T> > code;  //注意两个尖括号在一起也有一个空格,否则会被认为是>>
public:
    Code(){}
};

同样,在定义Code变量时也需要指明类型,这时候就可以指定具体类型了,比如Code<int> c;下面是完整的代码

#include <iostream>
#include <vector>
using namespace std;

template <class T>
class Word
{
private:
	vector<T> vec;
};

template<class T>
class Code
{
private:
	vector<Word<T> > code;
public:
	Code(){}
};

int main()
{
	Code<int> c;

	return 0;
}

觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> type/value mismatch at argument 1
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



分类: STL编程 标签: , , ,
  1. 2010年10月25日20:32 | #1

    我是专门跑过来膜拜的~~

    [回复]

    代码疯子 回复:

    大神前来光顾 也不留下博客地址

    [回复]

  1. 本文目前尚无任何 trackbacks 和 pingbacks.