C ++ Переопределение переменных пространства имен?

У меня два вопроса.

Вопрос 1: Может ли кто-нибудь привести пример того, как определить / переопределить переменную в пространстве имен. Я сам дал вам предположение, чтобы вы основали свой ответ.

// namespace.hpp
namespace example
{
static string version;
static int x;
}

А затем в .cpp, как мне переопределить эти переменные?

// namespace.cpp
namespace example
{
version = "0.1"; // ?????
x = 0; //???
}

Вопрос 2: Как бы я прикрепил объект постоянного класса к пространству имен из того же файла .hpp? Что-то вроде этого:

// namespace.hpp
class Idk
{
public:
int doThis();
}

namespace example
{
Idk idkObject;
}

Приведенный выше код при включении несколько раз (из разных файлов) заменит объект, что приведет к ошибкам компиляции. Еще раз, мне нужен постоянный способ прикрепить объект к пространству имен его заголовочный файл.

0

Решение

Вопрос 1: Вам также необходимо указать тип

// namespace.cpp
namespace example
{
string version = "0.1"; // ?????
int x = 0; //???
}

Вопрос 2: Вы не должны создавать «нестатический» объект в заголовочном файле независимо от пространства имен. Вы должны просто использовать static здесь, иначе вы должны использовать extern в заголовочном файле и определить переменную внутри файла cpp. {Обратите внимание, что это немного отличается от шаблонизированных классов}

// namespace.hpp
class Idk
{
public:
int doThis();
}

namespace example
{
static Idk idkObject;
}

// namespace.cpp
namespace example
{
Idk idkObject; // Default constructor
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector