KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I want to create an immutable data structure which, say, can be initialized from a file. class Image { public: const int width,height; Image(const char *filename) { MetaData md((readDataFromFile(filename))); width = md.width(); // Error! width is const height = md.height(); // Error! height is const } }; What I could do to fix the problem is class Image { MetaData md; public: const int width,height; Image(const char *filename): md(readDataFromFile(filename)), width(md.width()),height(md.height()) {} }; However It forces me to save MetaData as a field in my object. Which I don't always want. Sometimes the logic in the constructor is much more complex than a single read (say, error handling can take a few lines) So the only solution I thought of is along the lines of class A { int stub; int init(){/* constructor logic goes here */} A():stub(init)/*now initialize all the const fields you wish after the constructor ran */{} }; Is there a better idea? (In Java , you're allowed initializing final s in the constructor).
Tags (comma-separated)
Save Edits
Cancel