Der folgende Code:Ist es ok, ternären Operator in C++ - Streams zu verwenden?
#include <iostream>
using namespace std;
struct A{int number=10;};
int main()
{
A* a = new A();
cout<<"A val: "<< a==nullptr?"":a->number<<endl;
}
auf gcc 4.7 mit c kompiliert ++ 11 gibt:
error: invalid operands of types 'int' and '' to binary 'operator <<'
Ich verstehe nicht, warum, was auf richtige Art und Weise sein würde, es zu tun? Ich möchte die Nullkontrollen so kurz wie möglich halten, da ich davon ausgehe, dass sie sehr häufig sind.
Der ternäre Operator hat für die meisten Leute eine überraschend niedrige Priorität (http://en.cppreference.com/w/cpp/language/operator_precedence). Mein Vorschlag: Vermeiden Sie es, wenn Sie nicht absolut sicher sind, was es tut: Ihre Kollegen werden es Ihnen danken. – Wolf