How to get/set the actual value of an object

Hello, sorry for the confusing title.
Suppose I wrote a class:
1
2
3
4
5
6
7
8
9
class MyClass
{
    std::string val;
public:
    MyClass(std::string str)
    {
        val = str;
    }
}


This would allow the expression,
 
MyClass MC = "Hello, world!";

correct?

But how would I make this work?
1
2
MyClass MC = "Hello, world!"
std::cout << MC; // How can I make this print "Hello, world!"? 


I hope you understand. If not, I understand.
Sorry, I confuse myself aswell.

Thanks in advance!
> How can I make this print "Hello, world!"?

Overload the stream insertion operator.

For example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>

class my_class
{
    std::string text ;

    public:
        explicit my_class( const std::string& str ) : text(str) {}

    // overload the stream insertion operator
    friend std::ostream& operator<< ( std::ostream& stm, const my_class& mc )
    { return stm << "my_class{ \"" << mc.text << "\" }" ; }

};

int main()
{
    const my_class mc( "hello world!" ) ; // explicit constructor; so we use direct initialisation
    std::cout << mc << '\n' ; // prints  my_class{ "hello world!" }
}
Wow, thanks! :D
Topic archived. No new replies allowed.