One can have standalone enum-classes:
enum class StreamOpenMode
{
read,
write,
readWrite
};
class Stream
{
public:
Stream(StreamOpenMode openMode)
//...
};
Or nest them in another class:
class Stream
{
public:
enum class OpenMode
{
read,
write,
readWrite
};
Stream(OpenMode openMode)
//...
};
What are the technical reasons to choose one over the other? For example, the nested variety can't be forward declared, which might lead to circular dependency issues in large projects.