Почему так много ошибок здесь в typedef? - PullRequest
2 голосов
/ 31 января 2011

из этого:

   // 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 ]

8 голосов
/ 31 января 2011
typedef FunctionSequence::iterator FunctionIterator; // (line **)

Это должно быть записано как,

typedef typename FunctionSequence::iterator FunctionIterator;

Поскольку iterator является зависимым именем, поэтому typename требуется!

Читайте о зависимом имени здесь:

1 голос
/ 31 января 2011
  • Вам нужно typename, как уже упоминалось другими ( прочитайте это для более подробной информации).
  • Вы забыли ; в InitGet методе после dataElement = DataElement.
  • Вам не хватает некоторых заголовков, GraphItemMutex, GraphItemMutexConditionVariable и GraphWorker объектов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...