// includes, etc class WordGenerator { public: // Constructor, etc; void setRandWord(); void setBlankWord(); void newWord(); // Accessors, etc private: // Other member variables, etc std::string m_randWord; std::string m_blankWord;; }; WordGenerator::WordGenerator( // parameters ) { std::srand( std::time(NULL) ); // Code to initialize variables and vectors, etc WordGenerator::setRandWord(); WordGenerator::setBlankWord(); } void WordGenerator::setRandWord() { m_randWord = m_dictionaryVector[ std::rand() % m_dictionaryVector.size() ]; } void WordGenerator::setBlankWord() { std::string blankStr( m_randWord.length(), '_' ); m_blankWord = blankStr; } void WordGenerator::newWord() { setRandWord(); setBlankWord(); } // Other declarations, etc /* I'm asking which is best? When I call newWord(), is it possible that something happens between the execution of setRandWord() and setBlankWord() that would cause a mismatch? It is better to do something like this: void WordGenerator::newWord() { m_randWord = m_dictionaryVector[ std::rand() % m_dictionaryVector.size() ]; std::string blankStr( m_randWord.length(), '_' ); m_blankWord = blankStr; } Then just call newWord() in the constructor? I can't imagine a situation where I would call setRandWord() without needing to call setBlankWord(). */