Fixed reading of the user class from *.xml (ticket #840).
authorIlya Lysenkov <no@email>
Wed, 1 Jun 2011 10:05:11 +0000 (10:05 +0000)
committerIlya Lysenkov <no@email>
Wed, 1 Jun 2011 10:05:11 +0000 (10:05 +0000)
modules/core/include/opencv2/core/operations.hpp
samples/cpp/filestorage.cpp

index 87e6ad8..71329db 100644 (file)
@@ -2828,7 +2828,10 @@ FileNodeIterator& operator >> (FileNodeIterator& it, vector<_Tp>& vec)
 }
 
 template<typename _Tp> static inline void operator >> (const FileNode& n, _Tp& value)
-{ FileNodeIterator it = n.begin(); it >> value; }
+{ read( n, value, _Tp()); }
+
+template<typename _Tp> static inline void operator >> (const FileNode& n, vector<_Tp>& vec)
+{ FileNodeIterator it = n.begin(); it >> vec; }
 
 static inline bool operator == (const FileNodeIterator& it1, const FileNodeIterator& it2)
 {
index b7c8575..0dffef8 100644 (file)
@@ -59,7 +59,7 @@ void read(const FileNode& node, MyData& x, const MyData& default_value = MyData(
   if(node.empty())
     x = default_value;
   else
-    x = (MyData)node;
+    x.read(node);
 }
 
 ostream& operator<<(ostream& out, const MyData& m){