gpt4 book ai didi

c++ - 错误 : invalid conversion from char to const char*

转载 作者:行者123 更新时间:2023-11-28 02:39:13 34 4
gpt4 key购买 nike

我在以下代码中遇到了名义上的错误。

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_transcription.h,他们说它没有错误。那么有人可以对这两个文件进行错误检查,并确保我做对了一切吗?

最佳答案

std::string 没有 char 构造函数。如果你想从单个 char 构建一个字符串,你必须说 std::string(1, 'A')

它没有 char 构造函数,因为 char 是一个整数,整数参数会自动转换为字符,从而导致非常奇怪的错误。

因此,将您的调用从 transcription::to_rna('A') 更改为 transcription::to_rna("A")

同时将您的测试比较更改为字符串而不是字符。

更新:

根据legalize的说法,测试是完美的。所以答案不是更改测试,而是更改您的代码。

您将需要添加另一个接收单个字符的 to_rna 重载函数。您可能想要更新您的代码,以便您对字符串的循环为每个字符调用单个 char 函数。这将减少重复编写 if/then 系列两次。

关于c++ - 错误 : invalid conversion from char to const char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26539181/

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