在文件foo.h中说我有:
enum bar {
ONE = 1,
TWO
};
class foo {
bar m_bar;
public:
void setBar(bar arg){ m_bar = arg; }
bar getBar() const { return m_bar; }
};
在我目前的设计中,唯一的持久bar
变量将是m_bar
。但是我将在foo
之外包含bar
的其他函数,例如创建本地bar
并将其传递给setBar
的GUI类。
所以这是我的问题,是否有任何理由在bar
内公开定义foo
而不仅仅是在类的内部?
答案 0 :(得分:2)
所以这是我的问题,是否有理由在foo中定义bar而不仅仅是在类里面?
如果创建/使用bar的所有函数都与foo功能相关,那么完全可以这样写:
class foo
{
enum bar {
ONE = 1,
TWO
};
};
void process_bar_of_foo(foo::bar bar_value); // process the bar of a foo
另一方面,如果您编写的代码(概念上)与foo实例无关但处理条形值,则应该单独编写。
答案 1 :(得分:0)
嗯,就目前而言,你可以像你提到的那样用foo类之外的对象和函数创建bar对象,然后将它传递给你做的任何foo对象。
但是,如果您要在类中定义它,那么除非您首先创建一个foo类,否则您将无法真正生成bar对象,如果您只想枚举对象,则可能导致不必要的开销。 / p>
所以这真的取决于你要做什么。如果您只打算使用带有foo类的bar,那么在那里定义它是完全可以接受的。否则,如果要在其他地方访问它,请保持原样。