0

我在 C++ 中有一个非常简单的代码,这里是:

namespace Phoenix
{
    template<typename T>
    struct Ref
    {
    private: T* _instance;
    public: inline Ref(T* instance) { ... }
    public: inline Ref(const Ref<T> &reference) { ... }
    public: inline Ref<T>& operator=(const Ref<T> &reference) { ... }
    };
}

此代码位于 Visual 2012 C++ 库中。

现在,如果我尝试在最终应用程序中重用它,则会出现 C2894 错误,提示我无法将模板声明为具有“C”链接。好的。

我没用extern 'C'...

任何想法 ?我错过了什么吗?

4

1 回答 1

1

感谢 Roger Rowland,我修复了解决方案中的错误。

我命名了一个"String.h"使用我的模板结构 Ref 的文件。

由于它<string.h>在我的项目中存在另一个默认命名的文件(来自 C++ STL),因此编译器采用了这个文件而不是我的文件,因此出现了错误。

第一个的简单重命名解决了这个问题。

于 2013-07-05T08:55:55.427 回答