gpt4 book ai didi

c++ - 如何抽象调用其他各种代码的代码

转载 作者:行者123 更新时间:2023-12-02 09:59:02 25 4
gpt4 key购买 nike

我正在CLion中做很多项目,每个项目都有两段代码:SolutionTestConductorSolution是代码选项卡的解决方案,并且TestConductor使用Catch2运行测试(存储在input_n.txtoutput_n.txt文件中)。 TestConductor当然必须调用Solution。每个项目的Solution都会更改(代表不同的kata),但是TestConductor的更改只在于它需要知道input.txtoutput.txt文件的名称(它们的名称可能略有不同),以及如何调用Solution(名称因不同而不同)。 katas,例如可以称为PermutationFinderPairSorter或其他名称)。
我基本上已经将TestConductor代码复制粘贴到我的每个项目中,这对我来说似乎很臭。在哲学上正确的方法是什么?使TestConductor成为某种类型的库? (仍然学习如何制作和使用它们。)
如果您需要一些具体性,TestConductor代码为here。 (45线)
我想更笼统地说,如果要抽象的代码可以在多个项目中重用,而更改的代码却没有调用它,而是调用了它,该怎么办?
我知道这是一种非常常见的情况,有一个简单的解决方案。很抱歉,如果这是重复的问题;我不知道可以使用哪些搜索字词。

最佳答案

您可以根据解决方案类使TestConductor通用,只需更改类声明即可,如下所示:

template <class Solution>
class TestConductor { ... };
然后,该声明可以进入一个头文件,您可以将其包含在各个项目中。
然后,在每个项目中,您可以将测试用例提供为:
TEST_CASE() {
TestConductor<PermutationFinder> testMaker;
for (int test_number = 1; test_number <= 5; test_number++) {
string solution = testMaker.get_solution(test_number);
string test_solution = testMaker.get_test_solution(test_number);
REQUIRE(solution == test_solution);
testMaker.reset();
}
}

关于c++ - 如何抽象调用其他各种代码的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63641095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com