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

成员模板:Failed to specialize function template 'TYPE *thiscall Factory:c,该如何处理

2012-03-08 
成员模板:Failed to specialize function template TYPE *__thiscall Factory::c运行环境:VC6.0,编译报错

成员模板:Failed to specialize function template 'TYPE *__thiscall Factory::c
运行环境:VC6.0,编译报错Failed to specialize function template 'TYPE *__thiscall Factory::creteProduct(TYPE &)'
Factory是一个类工厂,我打算把createProduct实现为成员模板,这样可根据具体的Product类型实例化Product,不用为每一个Product都构造一个工厂类;了
其中包含五个文件,源码如下:
/******************************************/
文件:Factory.h
#ifndef _FACTORY_H_
#define _FACTORY_H_
#include "stdafx.h"
#include "Product.h"

class Factory
{
public:
Factory();
virtual ~Factory() ;
template<class TYPE>
TYPE* creteProduct(TYPE& type);
protected:


};
template<class TYPE>
TYPE* Factory::creteProduct(TYPE& type)
{
return new TYPE;
}
/*************************************************/
文件Factory.cpp
#include "Factory.h"
Factory::Factory()
{
}
Factory::~Factory()
{
}

文件Product.h
#ifndef _PRODUCT_H_
#define _PRODUCT_H_
/*******************************************/
class Product
{
public:
virtual ~Product()=0;
protected:
Product();
private:
};

/******************/
class ConcreteProduct:public Product
{
public:
ConcreteProduct();
virtual ~ConcreteProduct();
};

class ConcreteProduct2:public Product
{
public:
ConcreteProduct2();
virtual ~ConcreteProduct2();


};
#endif

/***************************************************/
文件Product.cpp
#include "stdafx.h"
#include "Product.h"
using namespace std;
Product::Product()
{
}
Product::~Product()
{
}


ConcreteProduct::ConcreteProduct()
{
std::cout << "concrete product!"<< endl;
}
ConcreteProduct::~ConcreteProduct()
{
}

ConcreteProduct2::ConcreteProduct2()
{
std::cout << "concrete product2!"<< endl;
}
ConcreteProduct2::~ConcreteProduct2()
{
}
/****************************************************/
主函数:
#include "stdafx.h"
#include "Product.h"
#include "Factory.h"
using namespace std;
int main(int argc, char* argv[])
{

Factory *pFactory = new Factory;
ConcreteProduct CP;
pFactory->creteProduct(CP);/***************此处出错return 0;
}

请问哪里错了,Why?

[解决办法]
囧,超级囧!VC6就是根本不支持成员模板。
[解决办法]
汗,超级汗!VC6就是根本不支持成员模板。

热点排行
Bad Request.