#ifndef A_H_INCLUDED
#define A_H_INCLUDED
namespace N
{
static int x;
void setX();
int getX();
}
#endif // A_H_INCLUDED
a.cpp
#include "a.h"
void N::setX()
{
x=25;
}
int N::getX()
{
return x;
}
main
#include <iostream>
#include "a.h"
int main()
{
N::x=300;
N::setX();
std::cout << N::x << N::getX()<<std::endl;
return 0;
}
Если убираем static в a.h, получаем ошибку линковки multiple definition of `N::x'. Со статиком же компилится, линкуется и выводит 300 и 25.
Вопросы:
1. Почему ошибка без статик?
2. Почему 300 и 25?
Спасибо.