关于一个全局结构体数组变量的使用问题

hyzkui 2010-01-13 12:35:12
k.h中
struct s
{
char c1;
char c2;
}
s *ss;
k.cpp中
ss=new s[10];

1、要在t.cpp中引用这个全局变量,extern该怎么写。

2、这个功能用类的静态变量怎么来完成呀?

...全文
187 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
心云 2011-04-16
  • 打赏
  • 举报
回复
谢谢,不过结构体的全局变量还是比较模糊,试验一下吧。
hyzkui 2010-01-13
  • 打赏
  • 举报
回复
k.h 中:
extern s* ss;
出错:非法的存诸类
jc_ontheroad 2010-01-13
  • 打赏
  • 举报
回复
1. 楼主的程序要这么改一下:
k.h 中:
extern s* ss;

k.cpp 中:
s* ss = new s[10];

在t.cpp 中:
#include "k.h"

2. 要用类的静态变量,但从楼主的程序看不出为什么需要用类的静态变量?
jackzhhuang 2010-01-13
  • 打赏
  • 举报
回复
extern是为了说明此处是声明,不是定义。

因此extern应该是在头文件,这样该头文件被多个cpp文件包含并链接成目标文件时,不会出现多次定义的错误。
qynum123 2010-01-13
  • 打赏
  • 举报
回复
k.h
#pragma once
struct s
{
char c1;
char c2;
};
extern s* ss;
class K
{
public:
K(void);
~K(void);
};

k.cpp
#include ".\k.h"
s* ss = new s[10];
K::K(void)
{
}
K::~K(void)
{
}

t.cpp
#include "k.h"
直接用ss

VS2003编译通过
wangxipu 2010-01-13
  • 打赏
  • 举报
回复
hyzkui 2010-01-13
  • 打赏
  • 举报
回复
joxhaha 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hyzkui 的回复:]
k.h 中:
extern s* ss;
出错:非法的存诸类

[/Quote]
敢不敢再前面加个 struct s;?
hyzkui 2010-01-13
  • 打赏
  • 举报
回复
在t.h中定义,在t.cpp中使用不用加extern吧?
是不是没有明白我的意思呢?
我的意思是在k.h中定义,k.cpp中初始化,在t.cpp中使用
GoForSky 2010-01-13
  • 打赏
  • 举报
回复
1:
//t.h文件中
struct s
{
char c1;
char c2;
};
s *ss;

//t.cpp中
#include <iostream.h>
#include "k.h"


extern s* ss;



int main()
{

ss=new s[10];
ss[0].c1='1';
ss[0].c2='2';

cout<<ss[0].c1<<" "<<ss[0].c2<<endl;
return 0;
}
运行结果
1 2
FrankSun80 2010-01-13
  • 打赏
  • 举报
回复
给ss换个别的名字就好了


[Quote=引用 2 楼 hyzkui 的回复:]
k.h 中:
extern s* ss;
出错:非法的存诸类

[/Quote]
FrankSun80 2010-01-13
  • 打赏
  • 举报
回复
struct s
{
char c1;
char c2;
}
s *ss;
这段代码定义两个类型 一个是s(一个sturct),一个是ss(指向s的指针)!

[Quote=引用 2 楼 hyzkui 的回复:]
k.h 中:
extern s* ss;
出错:非法的存诸类

[/Quote]

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧