с помощью Visual C++ 2010 У меня есть код, подобный следующему:C++ компилятор говорит мне типа не распознается
файла A.hpp:
...
#include "R.hpp"
...
class A; // forward declaration because the APtr_t is used inside the A class too.
typedef boost::shared_ptr<A> APtr_t;
...
class A {
...
void some_method() {
...
R::get()->mehod(); // singleton ;)
...
}
...
};
файл R.hpp:
...
#include "A.hpp"
...
class R {
...
APtr_t method();
...
};
Редактор Visual C++ говорит, что это нормально (без ошибок), но при компиляции проекта он действует, поскольку APtr_t не определен. Это показывает ошибки, как это:
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Дело в том, что эта проблема только происходит в файле R.hpp, я думаю ...
Есть ли у вас какие-либо идеи? Это довольно запутанно: -/
Заранее спасибо.
Я предполагаю, что линия 'метод APtr_t():' заканчивается точкой с запятой, а не полный двоеточие? – templatetypedef
Вам нужно разместить больше кода - желательно весь заголовок. – Puppy
'shared_pointer', я беру, это опечатка в вопросе и' shared_ptr' в фактическом коде. Во всяком случае, попробуйте уменьшить его до наименьшего фрагмента кода, который воспроизводит проблему. Многие вещи могут быть ошибочными в тех '.....' там, которые могут запутать компилятор. (Также 'APtr_t method():', вероятно, 'APtr_t method();'?) –