That's exactly right, Phil. But m_lex is the CParsMat member variable, CLex m_lex. The way I thought of it, as soon as I instantiated CParsMat, it automatically instantiated the CParsMat member variable CLex m_lex. So that using m_lex.parse(string s) should result in the string being set to the CLex::m_vs (vector<string> m_vs of CLex). In fact, it does, but only in the function CLex:arse(string s). when accessed via the CParsMat member variable, m_lex. Once out of CLex:arse(string s) function scope, the vector is no longer of any size.

I thought that the vector should persist and be accessible, but it's not. You're undoubtedly correct in that I have somehow instantiated the wrong (some other) vector, but I dont really get it.

Mike