如何访问另一个文件中的结构数组

时间:2014-10-28 05:42:52

标签: c++ structure

如何访问另一个文件中的结构数组。我说我有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

2 个答案:

答案 0 :(得分:1)

我建议进行以下更改:

  1. 1.hpp

    的更改
    1. 删除#include <stdio.h>。你不需要它。
    2. 提供数组的声明,而不是定义。

       struct st
       {
          int i; // You had Int, not int. I assume that was a typo.
          char ch[10];
       };
       extern struct st var[10];
      
  2. 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. 3.cpp

    的更改
    1. 添加#include <iostream>。您需要使用std::coutstd::endl
    2. 提供数组的定义。
    3. coutendlstd::范围一起使用。
    4. 由于var是一个数组,请使用var[p].i代替var.i
    5. 循环计数器到达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加分号;最后