模板类专业化

Aqu*_*irl 4 c++ templates template-specialization

我确实阅读了一些相关的主题,但问题仍然不明确:

#include <stdio.h>
#include <vector>
#include <iostream>

template <> class stack <int>
{
  public:
    std :: vector <int> stackVector;

};
Run Code Online (Sandbox Code Playgroud)

编译错误:

templateSpecializ.cpp:5: error: ‘stack’ is not a template
templateSpecializ.cpp:6: error: explicit specialization of non-template ‘stack’
Run Code Online (Sandbox Code Playgroud)

从这个链接:coderSource.net

我错过了一些观点吗?我觉得我有.我甚至试图在那里定义函数,但这没有用.

小智 7

这是一个名为stack的模板的模板特化.堆栈没有在那些头文件中定义.如果要定义新模板类,必须先定义基本案例

template<typename T>
class stack
{
  //implementation goes here
};

template<>
class stack<int>
{
 public:
  std::vector<int> stackVector;
};
Run Code Online (Sandbox Code Playgroud)

如果您只想为int定义堆栈而不是为您可以使用的每种类型定义堆栈

template<typename T> class stack;
template<>
class stack<int>
{
 public:
  std::vector<int> stackVector;
};
Run Code Online (Sandbox Code Playgroud)