C++ 几个.cpp文件之间如何实现数据共享

比如说有graph.cpp;main.cpp是否可以在graph.h中定义二者共需的全局变量,二者都包含graph.h,这样可以吗?为什么会出现LINK2005重定义错误... 比如说有graph.cpp;main.cpp是否可以在graph.h中定义二者共需的全局变量,二者都包含graph.h,这样可以吗?为什么会出现LINK2005重定义错误? 展开
 我来答
百度网友b913424
推荐于2016-04-25 · TA获得超过738个赞
知道小有建树答主
回答量:1379
采纳率:0%
帮助的人:647万
展开全部
全局变量不是这么用的,main.cpp中定义,然后在graph.h中声明为外部变量就行了

eg.

main.cpp

int pysTotalNumber;

在graph.h中

extern pysTotalNumber;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
花式码农
2008-09-13 · TA获得超过1.7万个赞
知道大有可为答主
回答量:4894
采纳率:0%
帮助的人:4728万
展开全部
共享是可以的。你说的解决方案:
1.将该变量声明为static.
2.将该变量声明为extern,然后再在一个cpp中声明它,比如graph.cpp中。
如:
// graph.h
extern int b;

// graph.cpp
int b;

// main.cpp
这里可以直接用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
发假或一半消息绝户
2008-09-13 · TA获得超过752个赞
知道小有建树答主
回答量:537
采纳率:0%
帮助的人:0
展开全部
因为你两个文件都包含graph.h头文件了,所以在连接的时候就有两个头文件的副本,所以就出错了,你可以这样,在头文件的前面写上
#ifndef XXXXX
#define xxx
在头文件的最后写上
#end if
这几行代码就是防止头文件被二次编译的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangtk1982
2008-09-13 · TA获得超过3742个赞
知道大有可为答主
回答量:3206
采纳率:100%
帮助的人:1436万
展开全部
可以

解决方法是使用自动处理的宏
#ifndef GRAPH_H
#define GRAPH_H

也可以在graph.h里加上 #pragma once
告诉编译器只处理一次

上面是头文件重定义的处理
C++里处理全局变量有很多方法
如使用类的静态成员等。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jdzfjfhnui
2008-09-13 · TA获得超过289个赞
知道小有建树答主
回答量:533
采纳率:0%
帮助的人:0
展开全部
#define xxx
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式