" A.H"
template<class T>
struct A
{
void foo();
};
template<class T>
struct B : A<T> {};
&#34; A.cpp&#34;
template<class T>
void A<T>::foo()
{
}
template struct B<int>;
当我在其他源文件中调用B的方法foo时,由于未解析的外部符号,它不会构建。为什么不用B定义A?我发现至少很奇怪。有没有办法强制定义B的定义?我尝试使用A :: foo添加&#34;&#34;结构B,但它没有改变任何东西。
我知道我可以简单地定义A,但我不想这样做,因为在我的真实代码中&#34; A&#34;包含的模板参数多于&#34; B&#34;而且我很担心,除非有人编写需要那些未解决方法的代码,否则我将犯错误。此外,我非常好奇为什么它不起作用。
答案 0 :(得分:0)
在.h文件中定义A :: foo。
A.H
template<class T>
struct A
{
void foo();
};
template<class T>
struct B : A<T> {};
template<class T>
void A<T>::foo()
{
}
A.cpp
template struct B<int>;