|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
Pointers Issues
Hey everyone,
So, we are having issues with pointers. I just wanted to know if anyone else is getting the same errors. They are kernel task exceptions. When I get rid of the pointers and initialize the classes another way, it all works. If anyone has a solution, please tell me. Otherwise, I just want to know if everyone else is having the same issue or it's just me.... Code:
#include "WPILib.h"
#include "Drive.h"
class RobotDemo : public SimpleRobot
{
Drive *dr;
public:
RobotDemo(void)
{
GetWatchdog().Kill();
dr = new Drive();
//AxisCamera &camera = AxisCamera::GetInstance();
dr->myRobot->SetExpiration(0.1);
}
/**
* Drive left & right motors for 2 seconds then stop
*/
void Autonomous(void)
{
GetWatchdog().Kill();
//dr->myRobot->SetSafetyEnabled(false);
dr->myRobot->Drive(0.5, 0.0); // drive forwards half speed
Wait(2.0); // for 2 seconds
dr->myRobot->Drive(0.0, 0.0); // stop robot
}
void OperatorControl(void)
{
GetWatchdog().Kill();
//dr->myRobot->SetSafetyEnabled(true);
while (IsOperatorControl())
{
printf("In Operator\n");
dr->myRobot->TankDrive(dr->leftstick, dr->rightstick);
Wait(0.01);
}
}
void Disabled(void)
{
printf("Disabled\n");
}
};
START_ROBOT_CLASS(RobotDemo);
It keeps giving me that the Drive *dr; has not been initialized correctly, where I believe I have. Anyone know any ways I can debug this? Thanks, -Eagle Engineering 1138 Last edited by cjlane1138 : 20-01-2012 at 11:42. |
|
#2
|
||||
|
||||
|
Re: Pointers Issues
If you suspect you have a problem with your code, you need to post it so other people can help you.
|
|
#3
|
|||
|
|||
|
Re: Pointers Issues
Just posted the code in the main post.
|
|
#4
|
|||||
|
|||||
|
Re: Pointers Issues
Is there indeed a Drive() constructor with no parameters?
|
|
#5
|
|||
|
|||
|
Re: Pointers Issues
No, I have a separate Drive class.
Drive.h Code:
#ifndef DRIVE_H_
#define DRIVE_H_
#include "WPILib.h"
class Drive
{
public:
Drive();
RobotDrive *myRobot;
Jaguar *leftmotor;
Jaguar *rightmotor;
Joystick *leftstick;
Joystick *rightstick;
};
#endif
Code:
#include "WPILib.h"
#include "Drive.h"
Drive::Drive()
{
printf("Initializing Drive.cpp\n");
leftmotor = new Jaguar(1);
rightmotor = new Jaguar(2);
myRobot = new RobotDrive(leftmotor, rightmotor);
leftstick = new Joystick(1);
rightstick = new Joystick(2);
};
MyRobot is in the main post. |
|
#6
|
||||
|
||||
|
Re: Pointers Issues
Another way? What way works? Do you know which line kills it?
|
|
#7
|
|||||
|
|||||
|
Re: Pointers Issues
I seem to remember something about needing to initialize things in the same order they were defined. This is just a guess, but have you tried moving the
Code:
myRobot = new RobotDrive(leftmotor, rightmotor); rive()? |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|