Не называет тип в C ++ - PullRequest
       36

Не называет тип в C ++

6 голосов
/ 19 ноября 2009

в C ++, когда я получаю сообщение об ошибке, которое говорит, что xxxxx не называет тип в yyy.h

Что это значит?

yyy.h включает заголовок, в котором находится xxxx.

Пример, я использую:

typedef CP_M_ReferenceCounted FxRC;

и я включил CP_M_ReferenceCounted.h в yyy.h

Мне не хватает базового понимания, что это?

Ответы [ 4 ]

5 голосов
/ 19 ноября 2009

Кажется, что вам нужно обратиться к пространству имен соответственно. Например, следующие yyy.h и test.cpp имеют ту же проблему, что и ваша:

//yyy.h
#ifndef YYY_H__
#define YYY_H__

namespace Yyy {

class CP_M_ReferenceCounted
{
};

}

#endif

//test.cpp
#include "yyy.h"

typedef CP_M_ReferenceCounted FxRC;


int main(int argc, char **argv)
{

        return 0;
}

Ошибка будет

...error: CP_M_ReferenceCounted does not name a type

Но добавьте строку "используя пространство имен Yyy;" устраняет проблему, как показано ниже:

//test.cpp
#include "yyy.h"
// add this line
using namespace Yyy;

typedef CP_M_ReferenceCounted FxRC;
...

Поэтому, пожалуйста, проверьте область пространства имен в ваших .h заголовках.

1 голос
/ 28 августа 2017

Хотя, возможно, это не связано с первоначальным вопросом OP ... это ошибка, которая у меня только что была, и показывает, как эта ошибка могла возникнуть.

Когда вы определяете тип в классе C ++ и возвращаете его, вам нужно указать класс, к которому принадлежит тип.

Например:

class ClassName{
public:
 typedef vector<int> TypeName;
 TypeName GetData();
};

Тогда GetName () должен быть определен как:

ClassName::TypeName ClassName::GetData(){...}

не

TypeName ClassName::GetData(){...}

В противном случае компилятор вернется с ошибкой:

error: 'TypeName' does not name a type
1 голос
/ 19 ноября 2009

Включение типа CP_M_ReferenceCounting, вероятно, лексически ПОСЛЕ typedef ... Вы можете напрямую связать два файла или воспроизвести проблему в простом примере?

0 голосов
/ 09 сентября 2017

Да, вы должны сначала проверить namespace.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...