This is named elaborated type specifier
For example a function can have the same name as a class. So to distiguish the function and the class usually elaborated type specifier is used with classes. Also elaborated type specifier introduce a new class name when the class is not defined yet..
In your example it seems that class CNVConn and struct SNVPoint were not defined yet in this compilation unit and maybe the definition even are not required. So elaborated type specifiers introduce two names CNVConn and SNVPoint in the scope. Without class key the compiler would issue an error.