Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以直接将QString输入(例如)googletest';s ADD_FAILURE()宏?_C++_Qt_Googletest - Fatal编程技术网

C++ 是否可以直接将QString输入(例如)googletest';s ADD_FAILURE()宏?

C++ 是否可以直接将QString输入(例如)googletest';s ADD_FAILURE()宏?,c++,qt,googletest,C++,Qt,Googletest,我已经增强了我的googletest环境,以处理一些Qt类型,如QString(有关更多详细信息,请参阅) 有没有办法进一步增强我的gtest,以便能够直接使用qString,或者没有办法避免将那些qString包装在qUtf8Printable()中 澄清: 编写ADD_FAILURE()c:\program files(x86)\microsoft visual studio 14.0\vc\include\ostream(495):注意:kann“std::basic_ostream&st

我已经增强了我的googletest环境,以处理一些Qt类型,如QString(有关更多详细信息,请参阅)

有没有办法进一步增强我的gtest,以便能够直接使用
qString
,或者没有办法避免将那些
qString
包装在
qUtf8Printable()

澄清:

编写
ADD_FAILURE()c:\program files(x86)\microsoft visual studio 14.0\vc\include\ostream(495):注意:kann“std::basic_ostream&std::basic_ostream::operatorQString不会为流插入提供相关的非成员,这就是问题的原因。(编译器未找到任何接受const QString&as参数的二进制运算符函数)

查看与您的问题相关的问题:
运算符您可以显示整个错误消息吗?通常它会显示这两种类型…请尝试使用
QString(“此处的文本”).toUtf8().constData();
并告诉我它是否有效!您还可以检查
.tostString().c_str()
。还有tostString()方法,但更多信息:@AlbertoMiola谢谢。
添加失败()@Yakk AdamNevraumont在这里,但原始错误消息是德语的(这就是为什么我把翻译版本放在那里).
googletest\include\gtest\gtest message.h(131):错误C2679:Binärer运算符”@CharonX当编译器无法匹配运算符时,它会告诉您左侧和右侧哪些类型是它无法匹配的。您正在查看某种摘要视图,而不是编译器的实际输出吗?谢谢,这正是我要查找的!我可以扩展包含PrintTo()的gtest标头Qt扩展并直接将qString与调用
::testing::internal::AssertHelper()
(如
ADD_FAILURE()
)的gtest宏一起使用
inline void PrintTo(const QString& str, ::std::ostream* os)
{
    *os << "<" << qUtf8Printable(str) << ">";
}
//...
ADD_FAILURE() << QString("Test!");
//...    

gtest-message.h(131): error C2679: Binary Operator "<<": Could not find an operator that accepts "const QString" (...)
2>c:\development\external\googletest\include\gtest\gtest-message.h(131): error C2679: Binärer Operator "<<": Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ "const QString" akzeptiert (oder keine geeignete Konvertierung möglich)  
2>  c:\program files (x86)\microsoft visual studio 14.0\vc\include\ostream(495): note: kann "std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(std::basic_streambuf<char,std::char_traits<char>> *)"  
2>  c:\program files (x86)\microsoft visual studio 14.0\vc\include\ostream(475): note: oder "std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(const void *)"  
2>  c:\program files (x86)\microsoft visual studio 14.0\vc\include\ostream(455): note: oder "std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(long double)" sein  
 ... **(snip)** ...  
2>  c:\program files (x86)\microsoft visual studio 14.0\vc\include\ostream(981): note: oder "std::basic_ostream<char,std::char_traits<char>> &std::operator <<<char,std::char_traits<char>,T>(std::basic_ostream<char,std::char_traits<char>> &&,const _Ty &)"  
2>          with  
2>          [  
2>              T=QString,  
2>              _Ty=QString  
2>          ]  
2>  c:\program files (x86)\microsoft visual studio 14.0\vc\include\ostream(1019): note: oder "std::basic_ostream<char,std::char_traits<char>> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &,const std::error_code &)"  
2>  c:\development\external\googletest\include\gtest\gtest-message.h(131): note: bei Anpassung der Argumentliste "(std::stringstream, const QString)"  
2>  c:\development\test\src\codetest.cpp(390): note: Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template "testing::Message &testing::Message::operator <<<QString>(const T &)".  
2>          with  
2>          [  
2>              T=QString  
2>          ] 
 DEFINES += QT_NO_CAST_TO_ASCII 
std::ostream & operator<<(std::ostream & stream, const QString & str)
{
    const QByteArray data = str.toUtf8();
    stream << std::string(data.constData(), data.size());
    return stream;
}