【发布时间】:2011-11-26 22:16:52
【问题描述】:
如果我的类是模板类,我通常只会在头文件中包含类的定义。- 如果是这种情况,我仍然喜欢像这样在头文件中拆分声明和定义:
template<class T>
class Foo
{
public:
Foo();
void fooFunc();
};
template<class T>
Foo<T>::Foo()
{
}
template<class T>
void Foo<T>::fooFunc()
{
}
该代码也可以编译。但如果我删除模板:
class Foo
{
public:
Foo();
void fooFunc();
};
Foo::Foo()
{
}
void Foo::fooFunc()
{
}
我收到 Foos 函数的重复符号错误。我非常确定这应该有效,但我很惊讶它没有。这是预期的行为吗?如果我在定义之前添加内联,它也可以工作。
【问题讨论】:
标签: c++