我正在尝试使用模板函数来打印列表中指向的对象的属性。
class SomeClass {
public:
double myVal;
int myID;
}
std::list< boost::shared_ptr< SomeClass > > myListOfPtrs;
for ( int i = 0; i < 10; i++ ) {
boost::shared_ptr< SomeClass > classPtr( new SomeClass );
myListOfPtrs.push_back( classPtr );
}
template < typename T > void printList ( const std::list< T > &listRef ) {
if ( listRef.empty() ) {
cout << "List empty.";
} else {
std::ostream_iterator< T > output( cout, " " ); // How to reference myVal near here?
std::copy( listRef.begin(), listRef.end(), output );
}
}
printList( myListOfPtrs );
相反,打印的是指针地址。我知道我通常会做类似的事情(*itr)->myVal
,但我不清楚如何调整模板功能。