diff --git a/test/cpp/src/TestClient.cpp b/test/cpp/src/TestClient.cpp
index 5ddfa06..4764a4c 100644
--- a/test/cpp/src/TestClient.cpp
+++ b/test/cpp/src/TestClient.cpp
@@ -297,23 +297,23 @@
      * ENUM TEST
      */
     printf("testEnum(ONE)");
-    Numberz ret = testClient.testEnum(ONE);
+    Numberz::type ret = testClient.testEnum(Numberz::ONE);
     printf(" = %d\n", ret);
 
     printf("testEnum(TWO)");
-    ret = testClient.testEnum(TWO);
+    ret = testClient.testEnum(Numberz::TWO);
     printf(" = %d\n", ret);
 
     printf("testEnum(THREE)");
-    ret = testClient.testEnum(THREE);
+    ret = testClient.testEnum(Numberz::THREE);
     printf(" = %d\n", ret);
 
     printf("testEnum(FIVE)");
-    ret = testClient.testEnum(FIVE);
+    ret = testClient.testEnum(Numberz::FIVE);
     printf(" = %d\n", ret);
 
     printf("testEnum(EIGHT)");
-    ret = testClient.testEnum(EIGHT);
+    ret = testClient.testEnum(Numberz::EIGHT);
     printf(" = %d\n", ret);
 
     /**
@@ -345,7 +345,7 @@
      * INSANITY TEST
      */
     Insanity insane;
-    insane.userMap.insert(make_pair(FIVE, 5000));
+    insane.userMap.insert(make_pair(Numberz::FIVE, 5000));
     Xtruct truck;
     truck.string_thing = "Truck";
     truck.byte_thing = 8;
@@ -353,19 +353,19 @@
     truck.i64_thing = 8;
     insane.xtructs.push_back(truck);
     printf("testInsanity()");
-    map<UserId, map<Numberz,Insanity> > whoa;
+    map<UserId, map<Numberz::type,Insanity> > whoa;
     testClient.testInsanity(whoa, insane);
     printf(" = {");
-    map<UserId, map<Numberz,Insanity> >::const_iterator i_iter;
+    map<UserId, map<Numberz::type,Insanity> >::const_iterator i_iter;
     for (i_iter = whoa.begin(); i_iter != whoa.end(); ++i_iter) {
       printf("%"PRId64" => {", i_iter->first);
-      map<Numberz,Insanity>::const_iterator i2_iter;
+      map<Numberz::type,Insanity>::const_iterator i2_iter;
       for (i2_iter = i_iter->second.begin();
            i2_iter != i_iter->second.end();
            ++i2_iter) {
         printf("%d => {", i2_iter->first);
-        map<Numberz, UserId> userMap = i2_iter->second.userMap;
-        map<Numberz, UserId>::const_iterator um;
+        map<Numberz::type, UserId> userMap = i2_iter->second.userMap;
+        map<Numberz::type, UserId>::const_iterator um;
         printf("{");
         for (um = userMap.begin(); um != userMap.end(); ++um) {
           printf("%d => %"PRId64", ", um->first, um->second);
