使用在不同源文件中定义的变量

时间:2013-06-07 01:50:55

标签: c++ c visual-studio-2010 pointers

我想从另一个cpp文件中获取值

例如这个在fileone.cpp中:

for (int i = 0; i < NSIZE(facerects); i++)
    {

        DetPar detpar;

        detpar.x = facerect->x + facerect->width / 2.;
        *gX=facerect->x;
        detpar.y = facerect->y + facerect->height / 2.;
        *gY=facerect->y;

    }

我希望在file2.cpp中获得* gX,* gY的值

在java中我们可以用getters做到这一点但是在c ++中用简单的方法做什么?

2 个答案:

答案 0 :(得分:1)

如果在另一个文件中定义了全局变量,则可以使用extern公开它们。 例如,如果在file2.cpp中,您将变量声明如下:

int *gX; // a pointer to an integer
int *gY;

然后在main.cpp中,您可以使用extern

来使用变量
// define these near the top of your cpp file and then use them wherever you need to
extern int *gX; // a pointer to an integer defined elsewhere in your program
extern int *gY;

但是,如果要按照源代码中的方式使用它们,至少要小心指向有效内存。简单地使用int(不是指针)会更好。

此外,值得考虑使用全局变量SO discussion of global variables in C/C++

的影响

答案 1 :(得分:0)

<强> fileone.h

#ifndef FILEONE_H
#define FILEONE_H

extern int *gX;
extern int *gY;

#endif

<强> fileone.cpp

#include "fileone.h"

// These are made available externally via fileone.h
int *gX = NULL;
int *gY = NULL;

<强> filetwo.cpp

#include "fileone.h"

// gX and gY are available, but are defined in fileone.cpp