Image

Imageex_flamy745 wrote in Imageru_cpp

Category:

Глобальные переменные

Есть проект на С++ с несколькими файлами, мне нужно создать несколько глобальных переменных, что бы их было видно со всех .cpp  файлов проекта. У меня постоянно появляется проблема с multiple definitions, и даже серия комманд препроцессора или же переменные невидны из других файлов.

#ifndef CONST
#define CONST
...globals
#endif

не помогает, и вообще я думаю что они созданы немного для другой цели. Проблема усложняется тем, что эти переменные являются обьектами из созданных мной классов. Я пробовал создать отдельный файл, где можно обьявить эти переменные, и потом записать #include с именем этого файла во все необходимые файлы проекта, но опять вылазит ошибка линкера с multiple definitions для каждого файла, в который я пытаюсь это добавить.

/*Пожалуйста подскажите решение.*/
Комбинация комманд препроцессора и обьявление обьектов статическими помогло

#include "someheader.h"
#ifndef INTPAIRS
#define INTPAIRS
static CLASS var1;
//global1
static CLASS var2;
//globarl2
#endif

Или это можно сделать правильно:
Если цель - разделять комплект объектов между собой, то лобовое решение:
// .h - #includится во всех клиентов
extern int foo;
// .cpp - _ровно_ один
int foo; // - именно этот объект все будут разделять.