-1

我一直在尝试强制实例化以下内容:

//A.h
namespace A {
    template <typename T>
    bool foo (B::C<T>, D);
} 

template bool A::foo<int> (B::C<int>, D);

//1.cpp 

namespace A {
template <typename T> 
bool foo (B::C<T>, D) {
    return false;
}
}




// 2.cpp
#include "A.h"

using namespace A;

void foo()
{///
    ...
    B::C<int> Alpha;
    foo(Alpha, Beta);
}

我收到的错误消息是:

C2785:不同的返回类型

C4667:未定义与强制实例化匹配的函数模板

这个实例化是否有明显的错误,因为错误消息似乎不相关。

4

1 回答 1

-2

发生这种情况是因为模板在编​​译时被扩展,所以编译器必须知道模板化函数的定义和实现,所以你不能在一个文件中定义函数并在另一个文件中实现它

于 2012-06-29T10:18:33.570 回答