SendableChooser changes and errors

It appears that SendableChooser is now a template based class. Is there any documentation on how to use it?

We made some changes to use it as:

SendableChooser<int> *pChoice;
pChoice = new SendableChooser<int>();

And once instantiated and objects are added, wanted to check it via:

int ch = pChoice->GetSelected();


int ch = (int)pChoice->GetSelected();

Both have been unsuccessful. Errors from compilation are:

arm-frc-linux-gnueabi-g++ -std=c++1y -I/Users/rwolff/wpilib/cpp/current/include -I/Users/rwolff/dev/robotics/FRCTeam1967/code/NatSndChTestJig/src -I/Users/rwolff/dev/robotics/FRCTeam1967/code/include -I/Users/rwolff/wpilib/user/cpp/include -O0 -g3 -Wall -c -fmessage-length=0 -o src/Robot.o ../src/Robot.cpp 
In file included from /Users/rwolff/wpilib/cpp/current/include/SmartDashboard/SendableChooser.h:51:0,
                 from /Users/rwolff/wpilib/cpp/current/include/WPILib.h:72,
                 from ../src/Robot.cpp:1:
/Users/rwolff/wpilib/cpp/current/include/SmartDashboard/ In instantiation of 'T frc::SendableChooser<T>::GetSelected() [with T = int]':
../src/Robot.cpp:38:42:   required from here
/Users/rwolff/wpilib/cpp/current/include/SmartDashboard/ error: cannot convert 'std::nullptr_t' to 'int' in return
     return nullptr;
/Users/rwolff/wpilib/cpp/current/include/SmartDashboard/ In member function 'T frc::SendableChooser<T>::GetSelected() [with T = int]':

I’m not sure if maybe it’s only intended to be used with classes or class pointers and not something simple like an int possibly? Or if there’s something more basic in err here.

roboBob shows how to use it with an object. Personally, I think SendableChooser is overkill for basic types that are supported by SmartDashboard, and would just use the SmartDashboard methods.

nullptr is std::nullptr_t while you set the return type to int. Make it return the correct type. You can use specialized template functions

Joe - thanks for the pointer. I’ll take a look at it working with an object instead of a int, but that seems a bug to me if it only works with objects. As for your statement about overkill … this is being used for picking an autonomous ‘mode’ prior to match start … how can you utilize SmartDashboard to do that? I don’t see any way to choose from a list or a set of radio buttons or just buttons to do that.

Euhlmann - while I understand the error notes the different types, this is a template class now and as such, looking at the definition of GetSelected() shows that the type “T” of the template is used as the return type for that function. I templated it with <int> and yet the return of GetSelected() isn’t returning that int.


BTW, I did get a good clean compile by changing the template type from<int> to <int*>. Seems a deficiency of the template class to me, but it compiled at least.