Result is designed to be a type returned by value to notify about the result of a function call. So you would create an object of this type using static functions Result::ok() or Result::fail (string), inside that function before returning it. It's not meant to be used for anything else - like having it as a class member.
To enforce that, the default constructor of Result is private, which is why your code doesn't compile.
Technically speaking, you could have a Result as a class member by initialising it in your class constructor's initialiser list, like this:
: result (Result::ok())
but I would advise against this as the class is not meant to be used this way.