我正在使用boost-graph-library编写Graph类。我使用自定义顶点和边缘属性以及一个映射来存储/查找给定属性的顶点/边 到目前为止,我对它的工作原理感到满意 但是,我有一个小问题,我不知道如何“很好”地解决它。 该类提供了一种方法
Vertex getVertex(Vertexproperties v_prop)
和方法
bool hasVertex(Vertexproperties v_prop)
现在的问题是,你会认为这是C ++中良好的编程习惯吗? 我的意见是,在我得到它之前,我首先要检查是否有可用的东西。 因此,在获得具有所需属性的顶点之前,必须检查hasVertex()是否会为这些属性返回true。 但是,我想让getVertex()更健壮一点。当直接调用getVertex()而没有事先检查图形是否具有相应的顶点时,ATM将会发生段错误。第一个想法是返回一个NULL指针或指向过去最后存储的顶点的指针。对于后者,我还没有发现如何做到这一点 但即使使用这个“健壮”版本,人们也必须在获取顶点后检查正确性,否则在解除引用该顶点指针时也会遇到SegFault。 因此,我想知道如果事先没有检查可用性,让getVertex()SegFault“ok”是否“ok”?
答案 0 :(得分:0)
我要么改成:
bool getVertex(Vertex& vertex, Vertexproperties v_prop);
如果找不到顶点,或让getVertex
引发异常。