【发布时间】:2014-10-01 13:55:21
【问题描述】:
当我开始使用 C++ 时,我将所有内容都放在一个大的 .cpp 文件中。
我现在正试图通过为我的函数创建类来改变这一点。但是我遇到了一个问题。
我有一个函数,其中有一个索引应该在某些情况下提高 1 并在下次保留这个值。例如,此索引用于重命名文件。像这样:
// if there's "motion" create new video file, reset index
if (numCont > 0 && contours.size() < 100) {
index = 0;
MotionDetector::saveFile(frame1, output_file, addFrames, video_nr);
}
// if there's a video file & no motion, raise index by 1
// if there's been no motion for x frames (that's what the index is for),
// stop recording
if (addFrames && numCont == 0) {
index++;
MotionDetector::saveFile(frame1, output_file, addFrames, video_nr);
if(index == 30) addFrames = false;
}
saveFile 里面是这样的:
if (!addFrames) {
// release old video file
// create new file using video_nr for the naming part
}
else {
//add frame to existing video
video << frame;
}
我想“全局”更改的另一个变量是布尔值。如果满足某些条件,则为真或假,并且必须保存此状态以供下次调用该函数时使用。
我知道我可以返回这些值,然后再次从我的 main 中使用它,但是我将有大约 3 个不同的变量(一个 Mat、一个 int、一个 bool)要返回,我不知道如何处理它.
在我把它移到它自己的类之前,我仍然有 2 个变量来让它工作,尽管我有点认为这样是没有用的。有什么简单的方法可以保持外部类中函数所做的更改?已经使用参考尝试过,但它似乎也不起作用。
现在 addFrames 是从原始类/函数调用传递的引用参数,但它不能按预期工作。
【问题讨论】:
-
在阅读了有关如何编写好代码的书籍后重写所有内容。我只能猜测,但我的蜘蛛感觉告诉我,你有一个无法维护的软件,有很多错误。
-
不清楚你在问什么。我猜成员变量或静态存储在某种程度上很重要。谁知道...
-
你想在函数中添加一个静态变量吗?
-
@NeilKirk:这只能解决症状,但不能解决原因(这是错误的代码)。我投票赞成“太宽泛”。
-
您的问题不清楚。说明您想要完成什么,向我们展示您为完成它而编写的代码,然后我们可以帮助您了解为什么它不起作用或为什么它不受欢迎(并提供更优雅的解决方案)。