Custom Classes?

How would I go about creating a custom class? For example, I want a class that has a digitalInput encapsulated within it. In simple terms, How would I convert my existing LimitSwitch class (https://github.com/itguy51/FRC4014-2012/blob/main/src/com/hightechhighfives/yearone/LimitSwitch.java) into C++? I have never actually used C++ in Object-Oriented programming other than simple things like in Visual Studio for demonstrations. I guessed how, and got this:


class limitSwitch
{
	DigitalInput di;
	limitSwitch::limitSwitch(UINT32 port){
		di(port);
	}
	bool limitSwitch::getState(){
		return di.Get() == 1;
	}
};

which is FULL of errors, there are more lines in the error log than there are in the cpp file. I get “Error: Expected ‘)’ before “port”” and am confused because that makes no sense. I want to pass an argument to the constructor so that it assigns the DigitalInput to the initialized port.
getState is supposed to return true/false based on the state of the switch.

Two ways of doing it. One is totally inline as you’re doing it (which isn’t really the C++ way of doing it).


#include <wpilib.h>

class LimitSwitch
{
public:

    LimitSwitch(UINT32 port) :
        di(port)
    {}
    
    bool getState()
    {
        return di.Get() != 0;
    }

private:
    DigitalInput di;
};

Or split into cpp/h files. Here’s LimitSwitch.h:


#ifndef __LIMITSWITCH_H
#define __LIMITSWITCH_H

class LimitSwitch
{
public:

    LimitSwitch(UINT32 port); 
    
    bool getState();

private:
    DigitalInput di;
};
#endif

And LimitSwitch.cpp:


#include <wpilib.h>
#include "LimitSwitch.h"

LimitSwitch::LimitSwitch(UINT32 port) :
    di(port)
{}

bool LimitSwitch::getState()
{
    return di.Get() != 0;
}