c++ - 全局模板对象 C++

标签 c++ templates object global

我有课

class ICIecHdlcSetup
{
 //some thing
};

为了创建一个全局访问对象,我这样做了:

//in obj.cpp:
ICIecHdlcSetup obj_ICIecHdlcSetup(0x00,0x00,0x16,0x00,0x00,0xFF);

//in obj.hpp:
extern ICIecHdlcSetup obj_ICIecHdlcSetup;

现在我有一个模板类:

template <class TValue>
class ICData
{
//some thing
};

但是同样的方法不行

//in obj.cpp:
ICData <uint8_t> temperture(7,64,41,0,0,255) ;

//in obj.hpp:
extern ICData <uint8_t> temperture ;

并犯这个错误:

Error   10  error LNK2019: unresolved external symbol "public: void __thiscall ICData<unsigned char>::set_value(unsigned char)" (?set_value@?$ICData@E@@QAEXE@Z) referenced in function "void __cdecl object_instantiation(void)" (?object_instantiation@@YAXXZ)    E:\sv_repos\Test\Test\VS2010\Test\Test\Objects.obj  Test

提前致谢。

最佳答案

给出的错误很可能意味着引用的函数根本不存在,通常不存在或在当前编译单元中。

检查以确保它已在类主体中定义(在模板化案例中的标题中)或被正确导入(如果来自外部源,例如 DLL 或库;这是一个常见问题,但不太可能出现在模板中),包括被链接的库。

您的 extern 全局变量的形式似乎是正确的,而且一般来说它确实适用于模板。该错误似乎特定于您的模板化类,但没有关于该函数是否实际存在于您发布的代码中的信息。

关于c++ - 全局模板对象 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937678/

相关文章:

python - 将变量传递到神社导入或从父 html 文件包含

javascript - 使用 Javascript 中的赋值运算符将一个对象设置为另一个对象

c++ - 扩展模板<class>类的参数包

c++ - boost::trim 和 std::bind2nd

templates - 如何在 Plone <h1> 元素内添加 <span> 标签

c++ - 为什么我需要类型 T 的复制构造函数?

javascript - JavaScript 中的所有函数本质上都是方法吗?

java - java中基于类的4个属性对对象进行排序

C++ 枚举不是的成员

c++ - 在进程中隔离和多重实例化 C 库