Not a class name or namespace

I know that this question has been asked and answered before, but none of the solutions seemed to work for me, and my compiler acts very strange with this error.

When I try to compile my code, I get numerous errors, such as:

Error 1 error C2653: 'TargetList' : is not a class or namespace name c:\projects\arcturus\augmentedreality\targetlist.cpp 5 1 AugmentedReality Error 2 error C2065: 'Target' : undeclared identifier c:\projects\arcturus\augmentedreality\targetlist.cpp 5 1 AugmentedReality Error 3 error C2146: syntax error : missing ')' before identifier 'target' c:\projects\arcturus\augmentedreality\targetlist.cpp 5 1 AugmentedReality Error 4 error C2059: syntax error : ')' c:\projects\arcturus\augmentedreality\targetlist.cpp 5 1 AugmentedReality Error 5 error C2143: syntax error : missing ';' before '{' c:\projects\arcturus\augmentedreality\targetlist.cpp 6 1 AugmentedReality Error 6 error C2447: '{' : missing function header (old-style formal list?) c:\projects\arcturus\augmentedreality\targetlist.cpp 6 1 AugmentedReality 

I encountered such an error when compiling my project before, but it mystically disappeared. I tried to fix this problem, and after a while it started working again after it returned all my changes.

I think this may be a problem for my precompiled header, as this error occurred after I tried to fix the error, since my PCH was not working properly.

Here is my code (and I know that it is not so well designed, just trying to get it working at the moment: P):

StdAfx.h

 #pragma once #define _USE_MATH_DEFINES #include <math.h> #include <stdio.h> #include <stdlib.h> #include <string> #include <vector> 

Target.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; }; 

Target.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; } 
+6
source share
1 answer

PCH (ie stdafx.h ) should be included first in the .cpp file. So do this:

 #include "stdafx.h" //this should be included first! #include "TargetList.h" #include "Target.h" 

See these topics:

+23
source

Source: https://habr.com/ru/post/894969/


All Articles