为什么typedef中有这么多错误?

时间:2011-01-31 16:23:55

标签: c++ visual-studio visual-studio-2008 boost

来自:

   // 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!(如何解决这个问题?

2 个答案:

答案 0 :(得分:8)

typedef FunctionSequence::iterator FunctionIterator; // (line **)

这应写成,

typedef typename FunctionSequence::iterator FunctionIterator;

由于iterator是从属名称,因此需要typename

在此处阅读依赖名称:

答案 1 :(得分:1)

  • 您需要其他人提及的typenameread this了解详情)。
  • 您在;之后的InitGet方法中忘记了dataElement = DataElement
  • 您遗漏了一些标题,GraphItemMutexGraphItemMutexConditionVariableGraphWorker个对象。