来自:
// parts of c++0x std
#include <boost/bind.hpp>
#include <boost/function.hpp>
#ifndef _IGraphElement_h_
#define _IGraphElement_h_
using namespace std ;
template <typename DataType >
class IGraphElement : public IGraphElementBase{
typedef boost::function<void(DataType)> Function;
typedef std::vector<Function> FunctionSequence; // (line *)
typedef FunctionSequence::iterator FunctionIterator; // (line **)
//...
};
我同时在线上获得C2146和C4430!(如何解决这个问题?
答案 0 :(得分:8)
typedef FunctionSequence::iterator FunctionIterator; // (line **)
这应写成,
typedef typename FunctionSequence::iterator FunctionIterator;
由于iterator
是从属名称,因此需要typename
!
在此处阅读依赖名称:
答案 1 :(得分:1)
typename
(read this了解详情)。;
之后的InitGet
方法中忘记了dataElement = DataElement
。GraphItemMutex
,GraphItemMutexConditionVariable
和GraphWorker
个对象。