Struct数组,如何定义好?

Saden2006 2007-09-14 03:08:35
刚刚问了一个Struct全局变量的问题,谢谢Chiyer(星羽) ( )。

可是如果要定义Struct数组,就会出现问题。不知怎样处理。

//Params.h
#include <string>

namespace MyParams
{
struct Param1
{
int P00;
int P01;
int P02;
std::string P03;
std::string P04;
};

};

//Params.cpp

namespace MyParams
{
Param1 Param1_Data[10]; //定义数组。
};


// app.cpp

#include "Params.h"

using Namespace MyParams;

extern Param1 Param1_Data[10]; //外部引用数组。

void main()
{
ShowMessage( Param1_Data[0].P00 );

}
编译出现连接错误:
[Linker Error] Unresolved external '_Param1_Data' referenced from MAIN.OBJ

//!!!!!!!
...全文
1159 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yydrewdrew 2007-09-14
  • 打赏
  • 举报
回复
我的文件:
1.h:
#include <string>
using namespace std;
namespace MyParams
{
typedef struct Param1
{
int P00;
int P01;
int P02;
string P03;
string P04;
} Param1_Data;
};

2.h:
#include "1.h"
using namespace MyParams;

Param1_Data m;
Param1_Data My_Data[10] = {m,m,m,m,m,m,m,m,m,m};

1.cpp:
#include <iostream>
#include "1.h"
using namespace std;
using namespace MyParams;

extern Param1_Data My_Data[10];


void main()
{
cout<<My_Data[0].P00<<endl;
return;
}

2.cpp:
#include "2.h"

一定要有2.cpp不然编译会错。
yydrewdrew 2007-09-14
  • 打赏
  • 举报
回复
还有就是你的数组不应该在Params.h中声明
应该声明在另外一个头文件中而不包含他
这样extern就有意义了
Saden2006 2007-09-14
  • 打赏
  • 举报
回复
仍旧提示,"_My_Data"没有实现。
zasu06 2007-09-14
  • 打赏
  • 举报
回复
同意楼上
LZ 为什么定义可以写一起为什么又要分开写 ?
yydrewdrew 2007-09-14
  • 打赏
  • 举报
回复
cpp文件:
#include "Params.h"

using namespace MyParams;

extern Param1_Data My_Data[10];

void main()
{
// ShowMessage( Param1_Data[0].P00 );

}
yydrewdrew 2007-09-14
  • 打赏
  • 举报
回复
Param1 Param1_Data[10]; //定义数组。
改成:
Param1_Data My_Data[10];

头文件:
#include <string>
using namespace std;
namespace MyParams
{
typedef struct Param1
{
int P00;
int P01;
int P02;
string P03;
string P04;
} Param1_Data;
Param1_Data My_Data[10];
};
cpp文件:
#include "1.h"

using namespace MyParams;

extern Param1_Data My_Data[10]; //ÍⲿÒýÓÃÊý×é¡£

void main()
{
// ShowMessage( Param1_Data[0].P00 );

}
lz试试,应该没问题。
Saden2006 2007-09-14
  • 打赏
  • 举报
回复
???
对,当然。不过这是在编译的时候可检查出来的。
现在的问题是Link错误,说结构类型没有实现。
飞哥 2007-09-14
  • 打赏
  • 举报
回复
using Namespace MyParams;
这行改成

using namespace MyParams;
飞哥 2007-09-14
  • 打赏
  • 举报
回复
狗狗的意思是你的 关键字写错了

不是Namespace
是namespace
注意大小写
Saden2006 2007-09-14
  • 打赏
  • 举报
回复
To goodluckyxl(被人遗忘的狗) ( ),

你的意思是否是要定义一个指针。
namespace MyParams
{
Param1 *Param1_Data[10]; //定义数组。
};

goodluckyxl 2007-09-14
  • 打赏
  • 举报
回复
using Namespace MyParams;

//Namespace->namespace

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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