Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GetFirst和GetNext调用从持久类获取记录_C++_Oop - Fatal编程技术网

C++ GetFirst和GetNext调用从持久类获取记录

C++ GetFirst和GetNext调用从持久类获取记录,c++,oop,C++,Oop,这更像是一个设计层面的问题。我有一个持久类,它通过SQL查询从DB查询记录,并通过名为getNext()的成员函数返回调用方,该函数的签名如下: int getNext(); // returns 0 on failure and 1 on success 我没有getFirst()调用。因此,调用方通常运行while循环来获取数据,例如 while (obj.getNext() > 0) { obj.getValues(0; ... } 在getNext()实现中,如果没有数

这更像是一个设计层面的问题。我有一个持久类,它通过SQL查询从DB查询记录,并通过名为getNext()的成员函数返回调用方,该函数的签名如下:

int getNext(); // returns 0 on failure and 1 on success
我没有getFirst()调用。因此,调用方通常运行while循环来获取数据,例如

while (obj.getNext() > 0) {
  obj.getValues(0;
  ...
}
在getNext()实现中,如果没有数据(第一次调用)或没有更多数据(while循环中的最后一次调用),我在输出中写入“未找到数据”并返回0,否则检索数据并返回1。 在getNext()调用中有没有聪明的方法可以知道这是第一个调用(没有数据意味着查询没有结果),这是循环中的非第一个调用,没有数据意味着查询没有更多的结果要显示,这很好,因此“找不到数据”将不会显示


建议?

我会把
bool firstCall
初始化为
true
作为你们班的一员。在
getNext()
的末尾,您可以将
firstCall
设置为
false
。因此,对
getNext()
的所有后续调用都将为false

现在,您可以根据
firstCall
值显示正确的输出

执行新查询时,
firstCall
必须重置为
false