Trying to use a global 2D array between 2 class files in C++ -
so i'm in process of writing game in c++ , there comes situation need share 2d array globally between multiple class files. here simpler version of code:
//first file creates , writes values railsmentity[7][100]
#include "weaponfire.h" #include <iostream> #include <sdtlib.h> #include <stdio.h> using namespace std; //ship common variables extern int shipgun; extern int shipgunammo; extern double shippower; //gun variables extern int railsm[]; /* //projectile common variables extern double gunx; extern double guny; extern double gunz; extern double gunpitch; extern double gunyaw; extern double gunspeed; extern double gunspeedmax; */ //ship navigation variables extern double x; extern double y; extern double z; extern double pitch; extern double yaw; extern double truespeed; //entity variables int extern railsmentitycount; int railsmentity[7][100];//[0]existance, [1]x, [2]y, [3]z, [4]pitch, [5]yaw, [6]truespeed, [7]maxspeed int railsmentitycountcurrent = 0; extern bool space; int looptemp = 0; weaponfire::weaponfire() { if(space == true){ if(shipgun == 0){//no weapon printf("no weapon equipped!\n"); } if(shipgun == 1){//railsm if(shipgunammo > 0 && shippower >= railsm[7]){//check ammo , power shipgunammo--;//decrease ammo shippower = shippower - railsm[7];//drain power //find valid storage position while(looptemp <= 100){//if within variable list bounds if(railsmentity[0][looptemp] == 0){//if entity slot available // railsmentitycountcurrent = railsmentitycount; looptemp = 0; } else{//if entity slot not available if(looptemp > 100){ printf("error\n"); } looptemp++; } } //railsm local initial entity raycast railsmentity[0][railsmentitycountcurrent] = 1; railsmentity[1][railsmentitycountcurrent] = x; railsmentity[2][railsmentitycountcurrent] = y; railsmentity[3][railsmentitycountcurrent] = z; railsmentity[4][railsmentitycountcurrent] = pitch; railsmentity[5][railsmentitycountcurrent] = yaw; railsmentity[6][railsmentitycountcurrent] = truespeed; } } } } weaponfire::~weaponfire() { //dtor }
//this other class file then, current simplicity, displays specific //value of railsmentity array
#include "railsmentity.h" #include "weaponfire.h" #include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std; extern int railsmentity[7][100];//[0]existance, [1]x, [2]y, [3]z, [4]pitch, [5]yaw, [6]truespeed, [7]maxspeed railsmentity::railsmentity() { printf("%d\n", railsmentity[1][1]); } railsmentity::~railsmentity() { //dtor }
but errors on second program states in constructor 'railsmentity::railsmentity()' , second error says error: expected primary-expression before '[' token in reference line printf("%d\n", railsmentity[1][1]);
so need make variable accessible?
you have variable , class same name, railsmentity
. doesn't work in c++, need rename 1 of them else.
Comments
Post a Comment