static absl::StatusOr<ImageFrame> ReadTextureFromFile() {
ImageFrame image_frame(width, height);
return image_frame;
}
Why return type is ImageFrame
and not absl::StatusOr<ImageFrame>
?
This is just a "syntactic sugar". The return type is abseil::StatusOr<ImageFrame>
. abseil::StatusOr<T>
allows you to return both abseil::Status
and the type T
from your function. When there is an error you can directly return the error status. On success, you return the object with type T
.
So you could also write something like that:
static absl::StatusOr<ImageFrame> ReadTextureFromFile() {
try {
ImageFrame image_frame(width, height);
}
catch{
return absl::AbortedError("Could not create image frame.");
}
return image_frame;
}
When you call this function, you need to check if everything went smooth.
auto image_frame_or = ReadTextureFromField();
ImageFrame image_frame;
if (image_frame_or.ok()){
image_frame = image_frame_or.value();
}