首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

菜鸟小弟我这么写类成员函数的模板实现,错在哪里

2013-12-02 
初学者求助:我这么写类成员函数的模板实现,错在哪里?我这么写类成员函数的模板实现,错在哪里?class A{publ

初学者求助:我这么写类成员函数的模板实现,错在哪里?
我这么写类成员函数的模板实现,错在哪里?
class A
{
public:
   template <typename T>
   void Max(T t1,int a);
}

template <typename T>
void A::Max(T t1,int a)
{
    //处理部分省略
}

void main()
{
  int i = 0;
  float f = 2.456;

  A ca;
  ca.Max(i,2);
  ca.Max(f,3);



[解决办法]
template <typename T>
class A
{
public:
   void Max(T t1,int a);
}
或者
template <typename T>
T Max(T t1,int a);



[解决办法]
VC6 不支持这种模板
这只是,比较旧的编译器,不支持而已。
换个版本就好
比如
VS2008(VC9),VS2010(VC10),VS2012(VC11?),VS2013(VC12?) 
后两种,需要win7,win8,
xp 跑不起来,所以不太清楚,想来应该支持的。
版本号对不对,不是很清楚。

[解决办法]
(1)定义函数模板(function template)

// implement strcmp-like generic compare function
template <typename T>
int compare(const T &v1, const T &v2)
{
    if (v1 < v2) return -1;
    if (v2 < v1) return 1;
    return 0;
}

(2)定义类模板(class template)
template <typename Type> 
class Queue
{
public:
    Queue();
    Type & front();
    const Type & front() const;
    void push(const Type &);
    // …
};

[解决办法]
模板成员函数没问题。


[解决办法]
class A 的定义}后面缺一个分号。
[解决办法]
引用:
我这么写类成员函数的模板实现,错在哪里?
class A
{
public:
   template <typename T>
   void Max(T t1,int a);
}

template <typename T>
void A::Max(T t1,int a)
{
    //处理部分省略
}

void main()
{
  int i = 0;
  float f = 2.456;

  A ca;
  ca.Max(i,2);
  ca.Max(f,3);



我把楼主的代码编译了下,用得是g++ ,只是类的定义后缺少;,还有main函数应该有返回值int,return 0;

class A
{

};

int main()
{
   return 0;

}

热点排行