如何访问另一个文件中的结构数组。我说我有3个文件1.h 2.cpp 3.cpp如下
1.H
#include<stdio.h>
struct st
{
Int i;
char ch[10];
};
struct st var[10];
2.cpp
#include"1.h"
int main
{
int s;
//here i hve scannd value of i frm user
callotherfile();
}
我 3.cpp
#include"1.h
int p;
void callotherfile(void)
{
for(p=1;p<=10;p++)
cout<<var.i[p]<<end;// is it good can i excess?
}
这里我得到的是errir,因为p和s不属于类,请帮我解决它
我正在编译为g ++ 2.cpp 3.cpp
答案 0 :(得分:1)
我建议进行以下更改:
对1.hpp
。
#include <stdio.h>
。你不需要它。提供数组的声明,而不是定义。
struct st
{
int i; // You had Int, not int. I assume that was a typo.
char ch[10];
};
extern struct st var[10];
对2.cpp
的更改。在使用之前为callotherfile
提供声明。
#include "1.h"
void callotherfile(void);
int main()
{
int s; // This is an unused variable. It can be removed.
callotherfile(); // You had a : not a ;. I assume that was a typo
}
对3.cpp
。
#include <iostream>
。您需要使用std::cout
和std::endl
。cout
和endl
与std::
范围一起使用。var
是一个数组,请使用var[p].i
代替var.i
。循环计数器到达p
时停止循环,而不是超过p
时。请注意,10
不是具有10
元素的数组的有效索引。
#include <iostream>
#include "1.h"
struct st var[10];
int p; // This variable can be moved to the function scope.
void callotherfile(void)
{
for(p=1;p<10;p++) // You had p<=10
std::cout<<var[p].i<<std::endl;
}
答案 1 :(得分:0)
您需要做的更改
1 #include {1.}中的“1.h”这可能是一个错字但这也不能解决你的问题只是为了注意
2您需要在{2.cpp'
文件中加入3.cpp
3使用此命令'g ++ 2.cpp'
编译它4 callotherfile():放分号;这里
5 3.cpp
加分号;最后