错误:从char到const char*的转换无效
error: invalid conversion from char to const char*
我在下面的代码中得到了名义上的错误。
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"));
}
#endif
rna_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中,因为我得到了stackoverflow检查的rna_transscription.h,他们说它没有错误。那么,有人能对这两个文件进行错误检查,并确保我一切正常吗?
std::string
没有char
构造函数。如果你想从单个char
构建一个字符串,你必须说std::string(1, 'A')
它没有char构造函数,因为char
是一个整数,整数参数会自动转换为字符,从而导致非常奇怪的错误。
因此,将您的呼叫从transcription::to_rna('A')
更改为transcription::to_rna("A")
还要将测试比较更改为字符串,而不是字符。
更新:
根据法律规定,这些测试是完美的。因此,答案不是更改测试,而是更改代码。
您将需要添加另一个接收单个字符的to_rna重载函数。您可能想要更新代码,以便在字符串上的循环为每个字符调用单个char函数。这将减少两次编写if/then系列的重复。
相关文章:
- 将无符号char*转换为std::istream*C++
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 将函数参数"const char*"转换为"std::string_view"是
- C ++如何在使用"tolower"时将char转换为int
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- 为什么从 char 转换为 std::byte 可能是未定义的行为?
- 如何在虚幻引擎4中将char*转换为TCHAR?
- C++:将模板类型 char 转换为 std::string
- strcmp/char* 转换无法按预期工作
- C++中的SQLite char*转换
- 无法从 const char* 转换为 const char *&
- 在 C++ 中将 char 转换为 int,而无需符号位传播
- 如果必须包含西里尔字符,如何将 char* 转换为 std::string?
- 试图使用strCMP时的char转换错误
- 无法从'const char *'转换为'LPCTSTR'
- 将 std::vector<char> 转换为字符* 会导致字符缺陷
- 使用 static_cast 将 char 转换为 int c++
- 如何在 C++(MFC) 中将 char* 转换为 LPCTSTR
- 无法将const char转换为字符串构造字符串