Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不是类或命名空间名称_C++_Class_Precompiled Headers - Fatal编程技术网

C++ 不是类或命名空间名称

C++ 不是类或命名空间名称,c++,class,precompiled-headers,C++,Class,Precompiled Headers,我知道这个问题以前有人问过,也有人回答过,但似乎没有一个解决方案对我有效,我的编译器对这个错误表现得很奇怪 当我尝试编译我的代码时,我会遇到许多错误,例如: Error 1 error C2653: 'TargetList' : is not a class or namespace name c:\projects\arcturus\augmentedreality\targetlist.cpp 5 1 AugmentedReality Error 2 er

我知道这个问题以前有人问过,也有人回答过,但似乎没有一个解决方案对我有效,我的编译器对这个错误表现得很奇怪

当我尝试编译我的代码时,我会遇到许多错误,例如:

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
我以前在编译项目时遇到过这种错误,但它神秘地消失了。我试图解决这个问题,过了一段时间,在我恢复了所有更改后,它又开始工作了

我想这可能是我的预编译头的问题,因为在我试图修复PCH不能正常工作的错误后,出现了这个错误

这是我的代码(我知道它设计得不是很好,只是目前正在尝试让它工作:p):

StdAfx.h

#pragma once

#define _USE_MATH_DEFINES
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <vector>
#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;
};
#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.h

#pragma once

#define _USE_MATH_DEFINES
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <vector>
#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;
};
#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;
};
#pragma一次
#包括“Target.h”
类目标列表
{
公众:
TargetList();
~TargetList();
bool AddTarget(Target-Target);
bool GetTarget(std::string shortName、Target和returnTarget);
bool RemoveTarget(std::string shortName);
私人:
std::向量mTargets;
};
TargetList.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;
}
#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;
}
#包括“TargetList.h”
#包括“Target.h”
#包括“stdafx.h”
bool TargetList::AddTarget(目标)
{
if(GetTarget(target.mShortName,target())!=false)
{
mTargets.push_back(目标);
返回true;
}
返回false;
}
bool TargetList::GetTarget(std::string shortName、Target和returnTarget)
{
std::vector::iterator迭代器;
for(迭代器=mTargets.begin();迭代器PCH(即
stdafx.h
)应首先包含在
.cpp
文件中。这样做:

#include "stdafx.h"     //this should be included first!
#include "TargetList.h"
#include "Target.h"
请参见以下主题:


您是否愿意告诉我们错误发生在哪里,或者这是测试的一部分?另外,
#include“stdafx.h”
应该放在最上面。或者在
stdafx.h
本身中包含两个目标文件。是的,这很有效,非常感谢。您知道为什么它会导致某些文件出错,而不是其他文件出错吗?只是好奇而已。@Nick:浏览链接,详细了解一下。也许是为了让别人有时间写一个更好的答案。