相关疑难解决方法(0)

ostream链接,输出顺序

我有一个函数,它将ostream引用作为参数,将一些数据写入流,然后返回对同一个流的引用,如下所示:

#include <iostream>

std::ostream& print( std::ostream& os ) {
  os << " How are you?" << std::endl;
  return os;
}

int main() {
  std::cout << "Hello, world!" << print( std::cout ) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

此代码的输出是:

 How are you?
Hello, world!0x601288
Run Code Online (Sandbox Code Playgroud)

但是,如果我将链接表达式分成两个语句,就像这样

int main() {
  std::cout << "Hello, world!";
  std::cout << print( std::cout ) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

然后我至少在输出中得到正确的顺序,但仍然得到一个十六进制值:

Hello, world! How are you?
0x600ec8
Run Code Online (Sandbox Code Playgroud)

我想了解这里发生了什么.正常函数是否优先operator<<,这就是输出顺序反转的原因?编写将数据插入到一个ostream但也可以链接的函数的正确方法是什么operator<<

c++ iostream chaining

10
推荐指数
1
解决办法
2208
查看次数

c ++:如何调用类中定义的朋友模板函数?

嗨大家好请帮我这个功能我从我的书中得到了这个例子,但我不知道如何实际调用票函数这是代码:

#include <iostream>
    class Manager { 
    public:
        template<typename T> 
            friend int ticket() { 
                return ++Manager::counter; 
            } 
        static int counter; 
    }; 

int main()
{
    Manager m;
    std::cout << "ticket: " << ticket<int>() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我得到"候选功能不可访问"错误消息 感谢很多寻找!

c++ templates

4
推荐指数
2
解决办法
2401
查看次数

标签 统计

c++ ×2

chaining ×1

iostream ×1

templates ×1