У меня есть личное перечисление в классе в пространстве имен.Я пытаюсь перегрузить операторы ввода / вывода, но все, что я получаю, это компилятор, жалующийся о том, что Enum является закрытым.Решение из "> этого поста не помогло мне.Вот изолированная версия моей проблемы.
TestClass.h
#include <iostream>
namespace Test
{
class TestClass
{
enum Enum : unsigned int {a = 0, b};
friend std::ostream& operator<<(std::ostream& os, Enum e);
};
std::ostream& operator<<(std::ostream& os, TestClass::Enum e);
};
TestClass.cpp
#include "TestClass.h"
std::ostream& operator<<(std::ostream& os, Test::TestClass::Enum e)
{
//do it
}
Компилятор жалуется на это, но не жалуется, когдаЯ удаляю класс из пространства имен, так как мне получить его для компиляции?
Я использую
g ++ -c TestClass.h
чтобы скомпилировать