Merkwürdiger Compilefehler.

nchristoph

Erfahrenes Mitglied
Erstmal Frohe Weihnachten alle zusammen.

Ich hab einen Compilefehler aus dem ich nicht Schlau werde.

Wenn ich folgenden Code verwende:

Code:
edict_t *CGameRules :: GetPlayerSpawnSpot( CBasePlayer *pPlayer )
{
	edict_t *pentSpawnSpot = EntSelectSpawnPoint( pPlayer );


	pPlayer->pev->origin = VARS(pentSpawnSpot)->origin + Vector(0,0,1);
	pPlayer->pev->v_angle  = g_vecZero;
	pPlayer->pev->velocity = g_vecZero;
	pPlayer->pev->angles = VARS(pentSpawnSpot)->angles;
	pPlayer->pev->punchangle = g_vecZero;
	pPlayer->pev->fixangle = TRUE;
	
	return pentSpawnSpot;
}

wird der gesamte Quellcode ohne Probleme compiled.

Sobald ich den Code allerdings etwas abändere, das er so aussieht:

Code:
edict_t *CGameRules :: GetPlayerSpawnSpot( CBasePlayer *pPlayer )
{
	if (g_pGameRules->IsTeamplay())
		edict_t *pentSpawnSpot = EntSelectTeamSpawnPoint( pPlayer );
	else
		edict_t *pentSpawnSpot = EntSelectSpawnPoint( pPlayer );


	pPlayer->pev->origin = VARS(pentSpawnSpot)->origin + Vector(0,0,1);
	pPlayer->pev->v_angle  = g_vecZero;
	pPlayer->pev->velocity = g_vecZero;
	pPlayer->pev->angles = VARS(pentSpawnSpot)->angles;
	pPlayer->pev->punchangle = g_vecZero;
	pPlayer->pev->fixangle = TRUE;
	
	return pentSpawnSpot;
}

krieg ich folgende Fehlermeldung:

error C2065: 'pentSpawnSpot' : undeclared identifier

Wieso ist das so und wie kann ich das verhindern?

Grüsse
 
Das hier
C++:
if (g_pGameRules->IsTeamplay())
        edict_t *pentSpawnSpot = EntSelectTeamSpawnPoint( pPlayer );
else
        edict_t *pentSpawnSpot = EntSelectSpawnPoint( pPlayer );
ist gleichbedeutend mit
C++:
if (g_pGameRules->IsTeamplay())
{
        edict_t *pentSpawnSpot = EntSelectTeamSpawnPoint( pPlayer );
}
else
{
        edict_t *pentSpawnSpot = EntSelectSpawnPoint( pPlayer );
}
Und eine Variable existiert nur immer bis zum Blockende, also bis zum }.

In der restlichen Funktion gibts das pentSpawnSpot also nicht mehr.

Als Abhilfe deklariere die Variable außerhalb des if/else.

C++:
edict_t *CGameRules :: GetPlayerSpawnSpot( CBasePlayer *pPlayer )
{
    edict_t *pentSpawnSpot;

    if (g_pGameRules->IsTeamplay())
        pentSpawnSpot = EntSelectTeamSpawnPoint( pPlayer );
    else
        pentSpawnSpot = EntSelectSpawnPoint( pPlayer );
 
    pPlayer->pev->origin = VARS(pentSpawnSpot)->origin + Vector(0,0,1);
    pPlayer->pev->v_angle  = g_vecZero;
    pPlayer->pev->velocity = g_vecZero;
    pPlayer->pev->angles = VARS(pentSpawnSpot)->angles;
    pPlayer->pev->punchangle = g_vecZero;
    pPlayer->pev->fixangle = TRUE;
    
    return pentSpawnSpot;
}

Frohe Weihnachten!
 
Zurück