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();
or
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/SendableChooser.inc: 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/SendableChooser.inc:60:12: error: cannot convert 'std::nullptr_t' to 'int' in return
return nullptr;
^
/Users/rwolff/wpilib/cpp/current/include/SmartDashboard/SendableChooser.inc: 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.
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.