我在下面的代码中得到标题错误。
rna_transcription_test.cpp
#include "rna_transcription.h"
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE(transcribes_cytidine_to_guanosine)
{
BOOST_REQUIRE_EQUAL('G', transcription::to_rna('C'));
}
#if defined(EXERCISM_RUN_ALL_TESTS)
BOOST_AUTO_TEST_CASE(transcribes_guanosine_to_cytidine)
{
BOOST_REQUIRE_EQUAL('C', transcription::to_rna('G'));
}
BOOST_AUTO_TEST_CASE(transcribes_adenosine_to_uracil)
{
BOOST_REQUIRE_EQUAL('U', transcription::to_rna('A'));
}
BOOST_AUTO_TEST_CASE(transcribes_thymidine_to_adenosine)
{
BOOST_REQUIRE_EQUAL('A', transcription::to_rna('T'));
}
BOOST_AUTO_TEST_CASE(transcribes_all_dna_nucleotides_to_their_rna_complements)
{
BOOST_REQUIRE_EQUAL("UGCACCAGAAUU", transcription::to_rna("ACGTGGTCTTAA"));
}
#endifrna_transcription.h
#include <string>
using namespace std;
class transcription
{
public:
static string to_rna(string input)
{
string returnValue;
for(char& c:input)
{
if(c == 'A')
{
returnValue.push_back('U');
}
else if(c == 'T')
{
returnValue.push_back('A');
}
else if(c == 'G')
{
returnValue.push_back('C');
}
else if(c == 'C')
{
returnValue.push_back('G');
}
}
return returnValue;
};
};我知道我刚刚发布了这篇文章,但是我有一种感觉,这个错误是在rna_transcription_test.cpp中出现的,因为我通过堆栈溢出检查了rna_transcription.h,他们说它没有bug。所以有人能不能检查一下这两个文件,并确保我把一切都做好了?
发布于 2014-10-23 23:32:47
std::string没有char构造函数。如果要从单个char构建字符串,则必须使用std::string(1, 'A')
它没有char构造函数,因为char是一个整数,整数参数将自动转换为字符,从而导致非常奇怪的错误。
所以将您的调用从transcription::to_rna('A')更改为transcription::to_rna("A")
还将测试比较更改为字符串而不是字符。
更新:
根据法律规定,这些测试是完美的。因此,答案不是更改测试,而是更改代码。
您将需要添加另一个接收单个字符的to_rna重载函数。您可能希望更新代码,以便字符串上的循环调用每个字符的单个char函数。这将减少两次编写if/然后系列所造成的重复。
https://stackoverflow.com/questions/26539181
复制相似问题