Многофайловая программа

Делал простенькую игру в консоли одним файлом, сейчас же хочу разбить её на модули в разных cpp файлах. Проблема в том, что мне нужно из разных cpp файлов работать с четко определенными функциями в главном cpp файле. Уже пробовал что-то написать, но вылезает всегда проблема двойного определения. Как быть? Буду рад любым рекомендациям.

Файл Header.h:

#ifndef HEADER_ 
#define HEADER_ 

#include <iostream>
using namespace std;

int x_pos;

int getX();
int func();

#endif

TEST.cpp:

#include "Header.h"

int main()
{
    x_pos = 12;
    cout << getX();

    cout << func();
}

int getX() {
    return 111;
}

Sourse.cpp:

#include "Header.h"

int func() {
    return getX();
}

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Harry

Замените

int x_pos;

на

extern int x_pos;

и добавьте

int x_pos;

в один из .cpp-файлов.

Или напишите вместо

int x_pos;

это:

inline int x_pos;

Дело в том, что просто

int x_pos;

это не просто объявление, но и определение глобальной переменной x_pos, в результате чего она оказывается определена в двух .cpp-файлах.

Если в программе, как и в примере, переменная используется только в одном .cpp-файле, то там ее и определите, не вставляя в .h-файл...

→ Ссылка