Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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++;类的行为类似于自定义的ostream、sstream 我有一个C++类 MyObjult,我希望能够像OSFATH一样把这些数据馈送(但不像直接的SsFr流,输入数据是以特殊方式格式化的)。我似乎不知道如何重载运算符,使MyObject接受给定给它的输入 class MyObject { public: ostringstream s; FEEDME }; int main() { MyObject obj; obj.FEEDME << "Hello" << 12345; // I want obj.s == ":Hello::12345:" } 类MyObject{ 公众: Ostringstreams; 喂我 }; int main(){ 肌体; obj.FEEDME_C++_Operator Overloading_Ostream_Sstream - Fatal编程技术网

有一个C++;类的行为类似于自定义的ostream、sstream 我有一个C++类 MyObjult,我希望能够像OSFATH一样把这些数据馈送(但不像直接的SsFr流,输入数据是以特殊方式格式化的)。我似乎不知道如何重载运算符,使MyObject接受给定给它的输入 class MyObject { public: ostringstream s; FEEDME }; int main() { MyObject obj; obj.FEEDME << "Hello" << 12345; // I want obj.s == ":Hello::12345:" } 类MyObject{ 公众: Ostringstreams; 喂我 }; int main(){ 肌体; obj.FEEDME

有一个C++;类的行为类似于自定义的ostream、sstream 我有一个C++类 MyObjult,我希望能够像OSFATH一样把这些数据馈送(但不像直接的SsFr流,输入数据是以特殊方式格式化的)。我似乎不知道如何重载运算符,使MyObject接受给定给它的输入 class MyObject { public: ostringstream s; FEEDME }; int main() { MyObject obj; obj.FEEDME << "Hello" << 12345; // I want obj.s == ":Hello::12345:" } 类MyObject{ 公众: Ostringstreams; 喂我 }; int main(){ 肌体; obj.FEEDME,c++,operator-overloading,ostream,sstream,C++,Operator Overloading,Ostream,Sstream,您可能会找到有用的答案。试试以下方法: class MyObject { public: template <class T> MyObject &operator<<(const T &x) { s << ':' << x << ':'; return *this; } std::string to_string() const { return s.s

您可能会找到有用的答案。

试试以下方法:

class MyObject {
public:
    template <class T>
    MyObject &operator<<(const T &x) {
        s << ':' << x << ':';
        return *this;
    }

    std::string to_string() const { return s.str(); }

private:
    std::ostringstream s;
};

MyObject obj;
obj << "Hello" << 12345;
std::cout << obj.to_string() << std::endl;
类MyObject{
公众:
模板

MyObject&operator我将采用稍微不同的方法创建格式化程序对象。
当格式化程序对象应用于流时,它将处理格式化字符的插入

#include <iostream>

template<typename T>
class Format
{
    public:
        Format(T const& d):m_data(d)    {}
    private:
        template<typename Y>
        friend std::ostream& operator<<(std::ostream& str,Format<Y> const& data);
        T const&    m_data;
};
template<typename T>
Format<T> make_Format(T const& data)    {return Format<T>(data);}

template<typename T>
std::ostream& operator<<(std::ostream& str,Format<T> const& data)
{
    str << ":" << data.m_data << ":";
}




int main()
{
    std::cout << make_Format("Hello") << make_Format(123);
}
#包括
模板
类格式
{
公众:
格式(T常量和d):m_数据(d){}
私人:
模板

friend std::ostream&OperatorTanks,我想我现在已经知道如何实现它了,但仍然得到一个错误“error:invalid use of member(你忘了“&”?”)”对于MyObject&Operator,我认为在g++4.3.3中编译得很好,编译器使用的是什么?g++(GCC)4.3.2,您说得对。它的编译和工作方式与我所希望的完全相同!谢谢。问题似乎是我的程序所特有的。