Я пытался понять это какое-то время, поэтому любая помощь будет отличной. Я пишу движок для школьного проекта, и данные в одном из моих указателей, похоже, меняются сами по себе. Я объявляю указатель объекта Actor * actor; в Engine.h и инициализируйте его с
void Engine::initActor(Actor* newActor)
{
actor = newActor;
std::cout << "Actor imported." << std::endl;
}
, отправив initActor () новый указатель актера со своим собственным указателем позиции общего класса позиции, как показано здесь:
class Position
{
public:
//vars
GLfloat x,y,z;
GLfloat rotx, roty, rotz;
//constructors
Position();
Position(int newx, int newy, int newz);
Position(int newx, int newy, int newz, int newRotx, int newRoty, int newRotz);
GLfloat distanceTo(Position pos1);
};
Затем, когда я рисую мир, я обращаюсь к указателю объекта Position класса Actor, и хотя указатель Position указывает на тот же адрес, по которому он был инициализирован, position-> x изменился с 0 на Первоначально он был установлен и теперь читается как -1.07374e + 008. Единственное, о чем я могу думать, это то, что память, на которую указывает указатель положения, изменилась, но я не знаю, почему или как этого избежать. Вот класс actor.h, если он помогает:
class Actor{
public:
//constructors
Actor();
//functions
Position* position;
void posCamera();
};