【发布时间】:2015-07-18 00:42:56
【问题描述】:
我有一个奇怪的要求。我有一个命名空间 foo,其中包含两个声明的 bar 类型的对象,即 bar1 和 bar2,我想通过类 bar 的构造函数对其进行初始化。这是一种合理的方式吗:
namespace foo {
class bar;
foo::bar *bar1;
foo::bar *bar2;
}
class foo::bar
{
/* Initialize bar1 and bar2 in the constructor.
*/
InitializeBar();
};
这个恶作剧背后的原因是我想创建一个类似于cout 和cin 的对象,这样foo::bar1 和foo::bar2 不需要由用户定义。更具体地说,我正在使用 ncurses 并希望将 cout 替换为输出窗口 bar1 和 cin 与输入窗口 bar2 并重载运算符,从而使输出窗口中的 foo::bar1 << a prints a 为我认为合适,foo::bar2 >> b 从输入窗口中提取值并将其转储到 b 中。我可以通过 C 函数调用来做到这一点,但我需要帮助才能将其扩展到 C++。也许bar1和bar2的默认初始化相应?
【问题讨论】:
-
如果你有多个 bar 对象,
bar1和bar2会被多次“初始化”? -
@EricZ 不,我希望它们只被初始化一次,这也是秘密的。用户永远不会调用构造函数,只使用这两个对象,类似于iostream的cout和cin的使用方式。
-
那你就可以使用工厂模式了。
标签: c++ namespaces window ncurses