有没有办法在头文件中声明指针并在 .cpp 中实例化它?

Posted

技术标签:

【中文标题】有没有办法在头文件中声明指针并在 .cpp 中实例化它?【英文标题】:Is there a way to declare a pointer in a header file and instantiate it in a .cpp? 【发布时间】:2011-03-08 03:56:40 【问题描述】:

正如我的问题所写: 有没有办法在头文件中声明指针并在.cpp中实例化它?

到目前为止我有这个:

.h:

FILE* stream;

.cpp

stream = fopen("com2", "r");

但这给了我这个错误:

1>gpsHandler.obj:错误 LNK2001: 未解析的外部符号“结构 _iobuf * 流" (?stream@@3PAU_iobuf@@A) 1>C:\Users***\portReading\Debug\portReading.exe : 致命错误 LNK1120: 1 未解决 外在

【问题讨论】:

您是否在 .cpp 中包含了头文件? 虽然您的操作不正确,但您发布的错误消息仍然与您发布的“代码”不一致。编辑您的帖子。 .h 文件的名称是什么? .cpp 文件的名称是什么?前者包含在后者中吗? gpsHandler 是什么文件? 【参考方案1】:

只要源文件中的变量不是static(内部链接),就可以在头文件中用extern FILE* stream;声明变量。这就是我们声明全局变量的方式:

.h:

extern FILE* stream;

.cpp:

FILE* stream;

就您的错误而言,您可能需要#include <cstdio>

【讨论】:

【参考方案2】:

尝试在头文件中将其声明为extern FILE* straem;

【讨论】:

以上是关于有没有办法在头文件中声明指针并在 .cpp 中实例化它?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在头文件中声明并在文件中定义会给出多个定义错误?

在类中声明数组并在构造函数中初始化

WIN32中我新建一个cpp和.h 在头文件中写了一个结构体然后在.cpp文件中使用该结构体总是报错具体如下图

C ++,如何在头文件中声明结构

在 C++ 中,如何跨多个类文件访问声明的对象?

在头文件中只声明一个class的用法