CS 3005: Programming in C++
Examples Using ActionData
Replacing Parameters with ActionData&
Most functions will need an updated parameter list, that replaces several parameters
with an ActionData reference. The internals of the functions will then use
the data members of the ActionData object instead of the previous parameters.
Here is an example of the changes to the getInteger function:
Previously:
int getInteger( std::istream& is, std::ostream& os, const std::string& prompt ) {
int n;
os << prompt;
is >> n;
return n;
}
Now:
int getInteger( ActionData& action_data, const std::string& prompt ) {
int n;
action_data.getOS() << prompt;
action_data.getIS() >> n;
return n;
}
Be sure to update the header file (image_menu.h) declaration as well as the
implementation in the correct .cpp file.
Creating an ActionData Object
Many of the functions in controllers.cpp will need to update the way they
call other functions, by first creating an ActionData object to be passed.
Some may also need to copy the changes made to the input image 1 into the
output image of the ActionData object.
Previously:
int assignment2( std::istream& is, std::ostream& os ) {
Image image;
diagonalQuadPattern(is, os, image);
drawAsciiImage(is, os, image);
return 0;
}
Now:
int assignment2(std::istream& is, std::ostream& os) {
ActionData action_data(is, os);
diagonalQuadPattern(action_data);
copyImage(action_data);
drawAsciiImage(action_data);
return 0;
}
Last Updated 02/17/2021

