如何避免在此代码中使用换行符。

void ListEl::display() {
    BaseEl::display();
    cout << " Asis: " << anemnesis << endl;
}


这是BaseEl :: display()

void BaseEl::display() {
    cout << "P: " << priority << "\tN: " <<  name << endl;
}


它总是打印BaseEl::display();的输出,然后换行,然后" Asis: " << anemnesis << endl;

我尝试了cout << BaseEl::display() << " Asis: " << anemnesis << endl;但它都没有用

最佳答案

如果不修改BaseEl::display()以在输出末尾停止产生新行,就无法解决此问题。

通常,将endl添加到您自己的输出中是个坏主意。如果呼叫者需要换行符,则让呼叫者这样做。

请注意,一种更类似于C ++的类输出方法为输出提供了operator <<的实现。如果要使用它进行虚拟调度,请在基类级别提供一个实现,并为派生类添加一个虚拟成员函数以覆盖:

class BaseEl {
protected:
    virtual void writeToStream(ostream& ostr) const;
    friend ostream& operator << (ostream& ostr, const BaseEl& val);
};
class ListEl : public BaseEl {
protected:
    virtual void writeToStream(ostream& ostr) const;
};

ostream& operator << (ostream& ostr, const BaseEl& val) {
    val.writeToStream(ostr);
    return ostr;
}

09-05 22:47