C++ 模板类错误 public: void __thiscall Number<int>::d isplayNumber(void)" (?displayNumber@?$Number@
C++ template class error public: void __thiscall Number<int>::displayNumber(void)" (?displayNumber@?$Number@N@@QAEXXZ) referenced in function _main
我收到以下错误:
public: void __thiscall Number<int>::displayNumber(void)"
(?displayNumber@?$Number@N@@QAEXXZ) referenced in function _main
public: __thiscall Number<int>::Number<int>(int)"
(??0?$Number@N@@QAE@N@Z) referenced in function _main
当我有如下代码时
文件名。。。。。。。。。。。。。。。。 数字.h
#ifndef NUMBER_H
#define NUMBER_H
#include<iostream>
#include<string>
using namespace std;
template <class T>
class Number
{
private:
T number;
public:
Number(T num);
void displayNumber(void);
};
#endif
文件名。。。。。。。。。。。。。。。。。。。编号.cpp
#include<iostream>
#include<string>
#include"Number.h"
using namespace std;
template <class T>
Number<T>::Number(T num)
{
number = num;
}
template <class T>
void Number<T>::displayNumber(void)
{
cout<<" Number is "<<number<<endl;
}
文件名。。。。。。。。。。。 主.cpp
#include<iostream>
#include<string>
#include"Number.h"
using namespace std;
int main()
{
Number<int> n(10);
n.displayNumber();
}
但是当我剪切主代码并将其粘贴到 Number.cpp 文件中时,它运行良好。
必须将模板函数定义移动到头文件。 有关原因,请参阅此处:为什么模板只能在头文件中实现?
如果您不喜欢这样,只需将 Number.cpp 重命名为 Number.inl 或其他名称,然后将其 #include 在 Number.h 的底部。 这具有将文件内容移动到标头的效果,但仍允许您出于组织目的保留两个单独的文件。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在c++类上调用void函数
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 在派生函数中指定void*参数
- C++为什么尽管我调用了void函数,它却不起作用
- 如何从void函数输出字符串
- 我应该使用什么来代替void作为变体中的替代类型之一
- 奇怪的结构&GCC&clang(void*返回类型)
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 引用一个已擦除类型(void*)的指针
- 将尾部调用void(i32,..)位转换为llvm::函数以获取FnAttribute
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 如何将指针从一个void函数传递到另一个C++
- 为什么我在使用void函数时得到错误代码C2276
- void*到驱动程序中的UnicodeString
- 为什么在逗号分隔符上下文中将预增量的结果强制转换为void
- 指针没有更新它在void函数内部指向的值
- 不能将 "void *" 类型的值分配给类型 "TCHAR" 的实体
- C++ 模板类错误 public: void __thiscall Number<int>::d isplayNumber(void)" (?displayNumber@?$Number@