Sé que esta pregunta se ha preguntado y respondido antes, pero ninguna de las soluciones parecen haber funcionado para mí, y mi compilador está actuando muy raro con este error.

Cuando intento compilar mi código me sale numerosos errores como estos:

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

Me encontré con este tipo de error al compilar mi proyecto antes, pero místicamente desaparecido. Yo estaba tratando de solucionar el problema, y después de un tiempo acaba de empezar a trabajar de nuevo después de que regresé a todos mis cambios.

Creo que esto puede ser un problema con mi encabezado precompilado, como este error apareció después de que yo había tratado de corregir un error con mi PCH no funciona correctamente.

Aquí está mi código (y sé que no está bien diseñado, tratando de conseguir que funcione en el momento :P):

StdAfx.h

#pragma once

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

De destino.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;
}
Te importa decirnos donde el error se produce, o es esta parte de la prueba? También, el #include "stdafx.h" probablemente debería ir en la parte superior.

OriginalEl autor Nick Taylor | 2011-08-13

1 Comentario

  1. 24

    PCH (he.e stdafx.h) se debe incluir en primer lugar en la .cpp archivo. Para hacer esto:

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

    Consulte estos temas:

    O incluir tanto de la Meta de archivos en stdafx.h sí mismo.
    Sí, esto ha funcionado, muchas gracias. ¿Sabes por qué causó errores en algunos archivos, y no en otros? Sólo por curiosidad.
    Ir a través de los enlaces a saber ese detalle.
    Quizás es más bien para que los demás tienen tiempo para escribir una respuesta mejor.

    OriginalEl autor Nawaz

Dejar respuesta

Please enter your comment!
Please enter your name here