使用模板的 C++ 方法定义
C++ Method definition with templates
我是全职 C++ 编程的新手,所以我试图更好地理解各种事物所涉及的细微差别。
我在一个小项目中使用模板,主要是在我学习的过程中编写代码,我遇到了一些我不太确定的事情。 Visual studio 帮助我生成了(在我的 .h 文件中的 .cpp 文件中)等同于此的代码:
template<class T>
PriorityQueue<T>::ClimbDownHeap(const int currentNodeIndex)
{
}
template<class T>
PriorityQueue<T>::GetRightNodeIndex(const int currentNodeIndex)
{
}
我的印象是这同样有效:
template <class T>
class PriorityQueue
{
public:
ClimbDownHeap(const int currentNodeIndex)
{
}
private:
GetRightNodeIndex(const int currentNodeIndex)
{
}
};
我的理解可能有误,但至少到目前为止,两者似乎都能编译。这两种风格之间有什么显着差异吗?我更喜欢第二个,因为它对我来说更干净、更清晰。它们之间的细微差别是什么?
注意:在颠簸的火车上输入此内容,因此我对格式问题或代码不清晰表示歉意(我是根据我尝试过的记忆输入的;它不准确)。
如果您想使用来自其他文件的模板 class,您的模板代码必须放在 header 中。放入源文件有效地使其成为私有的(通过使链接不可能)。
正如 James 在评论中提到的,阅读详细的解释和示例 here。
我是全职 C++ 编程的新手,所以我试图更好地理解各种事物所涉及的细微差别。
我在一个小项目中使用模板,主要是在我学习的过程中编写代码,我遇到了一些我不太确定的事情。 Visual studio 帮助我生成了(在我的 .h 文件中的 .cpp 文件中)等同于此的代码:
template<class T>
PriorityQueue<T>::ClimbDownHeap(const int currentNodeIndex)
{
}
template<class T>
PriorityQueue<T>::GetRightNodeIndex(const int currentNodeIndex)
{
}
我的印象是这同样有效:
template <class T>
class PriorityQueue
{
public:
ClimbDownHeap(const int currentNodeIndex)
{
}
private:
GetRightNodeIndex(const int currentNodeIndex)
{
}
};
我的理解可能有误,但至少到目前为止,两者似乎都能编译。这两种风格之间有什么显着差异吗?我更喜欢第二个,因为它对我来说更干净、更清晰。它们之间的细微差别是什么?
注意:在颠簸的火车上输入此内容,因此我对格式问题或代码不清晰表示歉意(我是根据我尝试过的记忆输入的;它不准确)。
如果您想使用来自其他文件的模板 class,您的模板代码必须放在 header 中。放入源文件有效地使其成为私有的(通过使链接不可能)。
正如 James 在评论中提到的,阅读详细的解释和示例 here。