我确实阅读了一些相关的主题,但问题仍然不明确:
#include <stdio.h>
#include <vector>
#include <iostream>
template <> class stack <int>
{
public:
std :: vector <int> stackVector;
};
编译错误:
templateSpecializ.cpp:5: error: ‘stack’ is not a template
templateSpecializ.cpp:6: error: explicit specialization of non-template ‘stack’
从此链接:coderSource.net
我错过了一些观点吗?我觉得我有。我甚至试图在那里定义函数,但这没有帮助。
答案 0 :(得分:7)
这是一个名为stack的模板的模板特化。堆栈没有在那些头文件中定义。如果要定义新的模板类,必须先定义基本案例
template<typename T>
class stack
{
//implementation goes here
};
template<>
class stack<int>
{
public:
std::vector<int> stackVector;
};
如果您只想为int定义堆栈而不是为每种类型定义,您可以使用
template<typename T> class stack;
template<>
class stack<int>
{
public:
std::vector<int> stackVector;
};
答案 1 :(得分:2)
如果您还没有专门化的模板,则无法专门化您的模板。所以这应该有效:
template <typename T>
class stack
{
};
template <>
class stack<int>
{
public:
std::vector<int> stackVector;
};