にリテラル私はオーバーロードされている演算子を渡す方法:アプリケーションでのロギングの私の特別なタイプのオーバーロードオペレータ
CLogger * operator<<(CLogger *logger, QString &str)
{
if(logger != nullptr)
{
logger->getStream()->operator <<(str);
return logger;
}
else
return nullptr;
}
そして私は、このように、この演算子によってパラメータを渡すためにしようとしている:
&myLog << "Hello";
myLog
は、私のCLogger
クラスです。私はこのエラーになっています:
invalid operands of types 'CLogger*' and 'const char [6]' to binary 'operator<<'
&myLog << "Hello";
^
をしかし、私はすべてが良いです。この方法としてQString
オブジェクトを渡している場合:
QString hi = "Hello";
&myLog << hi;
どのように私は、直接この文字列リテラル渡すことができますか?
なぜあなたは 'CLogger 'の代わりに' CLogger * 'を使っていますか? – Angew
私はロギングレベルを定義する必要があるので、例えば: '&myLog << LgLevel :: Info <<" Hello ";'グローバルに宣言されたログレベルが 'LgLevel :: Info'のレベルよりも低い場合、nullpointerを返す必要があります。ファイルには何も保存されません。 – drewpol