Constructor - Incorrect Argument Error

Hello,

I am struggling to compile my program and keep getting an error associated with one of my object constructors. I’ve posted my error and code below. Note that I did not include some of the ‘Data Control’ source code because I exceeded the character posting limit. Also, the ‘CDOS_Info’ is a struct that I created. Thanks for any help!

Error:

Arduino: 1.6.5 (Windows 7), Board: "Arduino Uno"

C:\Users\A5KW5ZZ\Desktop\arduino-1.6.5-r2-windows\arduino-1.6.5-r2\libraries\CDOS\StateController.cpp: In constructor 'StateController::StateController(CDOS_Info*)':
C:\Users\A5KW5ZZ\Desktop\arduino-1.6.5-r2-windows\arduino-1.6.5-r2\libraries\CDOS\StateController.cpp:19:58: error: no matching function for call to 'DataControl::DataControl()'
  StateController::StateController(CDOS_Info *inputtedInfo)
                                                          ^
C:\Users\A5KW5ZZ\Desktop\arduino-1.6.5-r2-windows\arduino-1.6.5-r2\libraries\CDOS\StateController.cpp:19:58: note: candidates are:
In file included from C:\Users\A5KW5ZZ\Desktop\arduino-1.6.5-r2-windows\arduino-1.6.5-r2\libraries\CDOS\StateController.h:16:0,
                 from C:\Users\A5KW5ZZ\Desktop\arduino-1.6.5-r2-windows\arduino-1.6.5-r2\libraries\CDOS\StateController.cpp:13:
C:\Users\A5KW5ZZ\Desktop\arduino-1.6.5-r2-windows\arduino-1.6.5-r2\libraries\CDOS\DataControl.h:19:3: note: DataControl::DataControl(CDOS_Info*)
   DataControl(CDOS_Info *inputtedInfo);
   ^
C:\Users\A5KW5ZZ\Desktop\arduino-1.6.5-r2-windows\arduino-1.6.5-r2\libraries\CDOS\DataControl.h:19:3: note:   candidate expects 1 argument, 0 provided
C:\Users\A5KW5ZZ\Desktop\arduino-1.6.5-r2-windows\arduino-1.6.5-r2\libraries\CDOS\DataControl.h:16:7: note: DataControl::DataControl(const DataControl&)
 class DataControl
       ^
C:\Users\A5KW5ZZ\Desktop\arduino-1.6.5-r2-windows\arduino-1.6.5-r2\libraries\CDOS\DataControl.h:16:7: note:   candidate expects 1 argument, 0 provided
Error compiling.

  This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.

My code:

Main

/***********************************************
 *********** Import Libraries ******************
 ***********************************************/

  #include "CDOS_Definitions.h"  
  #include "ConfigInit.h"
  #include "SensorSerialInterface.h"
  #include "StateController.h"
  #include "OutputInterface.h"
  #include <SoftwareSerial.h>   

/***********************************************
 ******* Declare datatypes/objects *************
 ***********************************************/
  
  CDOS_Info info;                                       // Datatype holds general information regarding the CDOS
  CDOS_Info * infoPointer = &info;                      // Declare and define a pointer of the CDOS_Info datatype
  ConfigInit configInit(infoPointer);                   // Configures & initializes the CDOS
  SensorSerialInterface sensorInterface(infoPointer);   // Controls the communications between the Arduino and IMU    
  StateController stateController(infoPointer);         // Transitions the CDOS between various states
  OutputInterface outputMessage(infoPointer);           // Outputted serial message providing status information to a computer terminal

/***********************************************
 *************** Main Program  *****************
 ***********************************************/
  
void setup(){
  configInit.config();
  configInit.init();
  sensorInterface.setAllOutput(); // Force IMU to output status of accelerometer, gyroscope, and magnetometer
}

void loop(){
  sensorInterface.readAll(info.accelXYZ, info.gyroXYZ, info.magXYZ);  // Get sensor data
  stateController.routine();                                          // Jump into state transition logic
  outputMessage.outputSerial();                                       // Output CDOS status info
  
}

State Controller Header

#ifndef StateController_h
#define StateController_h

#include "CDOS_Definitions.h"
#include "InputInterface.h"
#include "DataControl.h"
#include "LEDController.h"

class StateController
{
	public:
		StateController(CDOS_Info *inputtedInfo);
		void routine(void);
		
	private:
		CDOS_Info *info; 				// create copy of CDOS_Info pointer that member functions can access and modify
		InputInterface userInput;		// Create input interface object
		DataControl dataControl; 		// Create data control object
		LEDController lightController;	// Controls the LEDs on the CDOS
};

#endif

State Controller Source Code

StateController::StateController(CDOS_Info *inputtedInfo)
 { 
	info = inputtedInfo;
	userInput = InputInterface();
	dataControl = DataControl(info);
	lightController = LEDController();
 }

 void StateController::routine(void)
 {
	 int static previousTime;
	 int currentTime = millis();
	 bool static startTime = false;
	 int teachTime = 5000; 
	 
	 // State 0 - Start Up State
	 if(info->currentState == 0)
	 {
		 // Transition Case
		 if(userInput.getDigitalInput())
		 {
			 info->currentState = 3;
			 previousTime = currentTime;
		 }
		 
		 // Lighting
		 lightController.setLightConfig0();
	 }
	 
	 // State 1 - Disturbed State
	 else if(info->currentState == 1)
	 {
		// Transition Case
		if(userInput.getDigitalInput())
		{
			info->currentState = 3;
			previousTime = currentTime;
		}

		// Compute vertical angle
		dataControl.calculateVerticalAngle();
		
		// Lighting
		lightController.setLightConfig1();
	 }
	 
	 // State 2 - Faulted State
	 else if(info->currentState == 2)
	 {
		 // Haven't created any cases where the system can fault yet, will finish later
		 
		 // Lighting
		 lightController.setLightConfig2();
	 }
	 
	 // State 3 - Teaching State
	 else if(info->currentState == 3)
	 {
		 
		 // Transition Case
		 if(abs(currentTime - previousTime) > teachTime)
		 {
			 info->currentState = 4;
			 dataControl.teachNewPosition();
		 }
		 
		 // Lighting
		 lightController.setLightConfig3();
	 }	 
	 
	 // State 4 - Taught State
	 else if(info->currentState == 4)
	 {
		 // Transition Case
		 if(dataControl.checkPosition())
		 {
			 info->currentState = 1;
		 }
		 
		 // Compute vertical angle
		 dataControl.calculateVerticalAngle();
		 
		 // Lighting
		 lightController.setLightConfig4();
	 }	 	 
 }

Data Control Header

#ifndef DataControl_h
#define DataControl_h

#include "CDOS_Definitions.h"

class DataControl
{
	public:
		DataControl(CDOS_Info *inputtedInfo);
		void teachNewPosition(void);
		bool checkPosition(void);
		void calculateVerticalAngle(void);		
		
	private:
		CDOS_Info *info; 	// create copy of CDOS_Info pointer that member functions can access and modify
};

#endif

Data Control Source Code

#include "Arduino.h"
#include "DataControl.h"
#include "CDOS_Definitions.h"
#include "SensorSerialInterface.h"


DataControl::DataControl(CDOS_Info *inputtedInfo)
{	
	info = inputtedInfo;	
}

In the state controller source code, try two changes in the constructor.

Change the first line to:

StateController::StateController(CDOS_Info *inputtedInfo): dataControl(info)

Delete this line:

dataControl = DataControl(info);