放置模板类定义的适当位置

时间:2013-03-26 03:26:00

标签: c++

在一个类的pound定义之外定义你的类是正确的还是它们进入了pound定义?我要问的例子可以在下面看到。

#ifndef CLASS
#define CLASS

template <typename T>
Class 
{
    Class();
};

template <typename T>
Class::Class()
{
}

#endif

---或 -

#ifndef CLASS
#define CLASS

template <typename T>
Class 
{
    Class();
};

#endif

template <typename T>
Class::Class()
{
}

1 个答案:

答案 0 :(得分:2)

我会在include guards(pound definitions)中定义它以避免多重定义的符号。因此,对于模板类,如在您的示例中,我将始终在包含保护中定义它,因为它们总是必须在头文件中定义。

对于其他非模板类,我可以在源(.cpp)文件中定义成员函数,因此这显然不在包含保护之内。

作为一个脚注,我还指出,对于这样一个简单的构造函数,我实际上是在类声明中定义它,甚至根本没有定义它,但我猜你的实际代码有点复杂比给出的例子。