




















































我修改了ValueTraits< TMyClass<T>>的asString()方法,原来写法如下:
return _s.str().c_str();
测试代码如下:















修改前运行结果如下:
In TestTMyClass::testEquals:
e:/temp/TestTMyClass.h:13: Error: Expected (m1 == m2), found K7 != class TMyClass<int>(10))
原本是第一个对象变成了第二个,而第二个对象成了K7,莫名其妙!
修改后结果如下:
In TestTMyClass::testEquals:
e:/temp/TestTMyClass.h:13: Error: Expected (m1 == m2), found (class TMyClass<int>(10) != classTMyClass<int>(23))
但是我发现一个奇怪的问题,就是asString中的类成员变量都是const的,于是我用了强制类型转换才搞定。本来我想返回一个string对象,但是作为成员变量的string对象不让我赋值,说是const的。刚刚才想明白,原来asString()是一个const成员函数,不能修改成员变量的。唉,对C++还是了解不够啊!
不过为什么return _s.str().c_str()不行呢?可能是因为_s.str()返回的是一个临时对象,只能这样解释了,但是为什么两个对象顺序颠倒呢?不懂的事情实在太多!