не является именем класса или пространства имен
Я знаю, что этот вопрос был задан и ответил раньше, но ни одно из решений, кажется, работает для меня, и мой компилятор ведет себя очень странно с этой ошибкой.
когда я пытаюсь скомпилировать свой код, я получаю множество ошибок, таких как:
Error 1 error C2653: 'TargetList' : is not a class or namespace name c:projectsarcturusaugmentedrealitytargetlist.cpp 5 1 AugmentedReality
Error 2 error C2065: 'Target' : undeclared identifier c:projectsarcturusaugmentedrealitytargetlist.cpp 5 1 AugmentedReality
Error 3 error C2146: syntax error : missing ')' before identifier 'target' c:projectsarcturusaugmentedrealitytargetlist.cpp 5 1 AugmentedReality
Error 4 error C2059: syntax error : ')' c:projectsarcturusaugmentedrealitytargetlist.cpp 5 1 AugmentedReality
Error 5 error C2143: syntax error : missing ';' before '{' c:projectsarcturusaugmentedrealitytargetlist.cpp 6 1 AugmentedReality
Error 6 error C2447: '{' : missing function header (old-style formal list?) c:projectsarcturusaugmentedrealitytargetlist.cpp 6 1 AugmentedReality
я столкнулся с такого рода ошибкой при компиляции моего проекта раньше, но он мистически исчез. Я пытался исправить проблему, и через некоторое время она снова начала работать после того, как я вернул все свои изменения.
Я думаю, что это может быть проблема с моим предварительно скомпилированным заголовком, Так как эта ошибка появилась после того, как я попытался исправить ошибку с моим PCH не работает должным образом.
вот мой код (и я знаю, что он не так хорошо разработан, просто пытаюсь заставить его работать в данный момент : P):
файл stdafx.h
#pragma once
#define _USE_MATH_DEFINES
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <vector>
цель.h
#pragma once
#include "Position.h"
#include <string>
#include <vector>
class Target
{
public:
Target();
Target(std::string shortName, std::string longName, Position position);
~Target();
bool UpdateTargetData(Position currentPosition);
std::string mShortName;
std::string mLongName;
Position mPosition;
double mDistance;
double mHorizontalBearing;
double mVerticalBearing;
};
цель.cpp
#include "Target.h"
#include "stdafx.h"
bool Target::UpdateTargetData(Position currentPosition)
{
mDistance = currentPosition.GetDistance(mPosition);
mHorizontalBearing = currentPosition.GetHorizontalBearing(mPosition);
mVerticalBearing = currentPosition.GetVerticalBearing(mPosition);
return true;
}
targetlist, который.h
#pragma once
#include "Target.h"
class TargetList
{
public:
TargetList();
~TargetList();
bool AddTarget(Target target);
bool GetTarget(std::string shortName, Target& returnTarget);
bool RemoveTarget(std::string shortName);
private:
std::vector<Target> mTargets;
};
targetlist, который.cpp
#include "TargetList.h"
#include "Target.h"
#include "stdafx.h"
bool TargetList::AddTarget(Target target)
{
if (GetTarget(target.mShortName, Target()) != false)
{
mTargets.push_back(target);
return true;
}
return false;
}
bool TargetList::GetTarget(std::string shortName, Target& returnTarget)
{
std::vector<Target>::iterator iterator;
for (iterator = mTargets.begin(); iterator < mTargets.end(); iterator++)
{
if ((*iterator).mShortName == shortName)
{
returnTarget = (*iterator);
return true;
}
}
return false;
}
bool TargetList::RemoveTarget(std::string shortName)
{
std::vector<Target>::iterator iterator;
for (iterator = mTargets.begin(); iterator < mTargets.end(); iterator++)
{
if ((*iterator).mShortName == shortName)
{
mTargets.erase(iterator);
return true;
}
}
return false;
}
1 ответов
PCH (i.e stdafx.h
) должны быть включены сначала в . Так сделайте это:
#include "stdafx.h" //this should be included first!
#include "TargetList.h"
#include "Target.h"
посмотреть эти темы: