分配给可以允许NULL成员的数组,而不使用堆?

Eng*_*eer -2 c++ null

有没有简单有效的答案呢?除了"决定哪个更重要"之外,就是这样.

让我详细说明一下.我想要一个固定大小的数组.它表示可以为套接字服务器打开以接受客户端的会话槽.这些数量有限(目前有四个).

也许从C++的角度来看,我的问题都是错的.也许我应该将它们视为会话槽,虽然填充了会话对象,但在给定会话引用连接的TCP套接字之前,它可能不一定可用.这与大多数动态语言不同,我可以简单地将会话槽指定为null,直到会话填充数组中的那个槽.

R. *_*des 12

如果您想要一个具有可选语义的自动存储对象(即可能存在或可能不存在),您可以使用boost::optional.

boost::optional<T>是一个可以有零个或一个元素的容器.如果它是空的,则它不存储T对象,就像空向量不存储任何对象一样.事实上,您可以将boost::optional<T>其视为std::vector<T>哪个容量始终为1并且不能增长.并且由于此所需的存储大小是固定的并且在编译时(它的sizeof(T))已知,因此boost::optional不需要任何动态分配.