Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   C/C++ (http://www.chiefdelphi.com/forums/forumdisplay.php?f=183)
-   -   SendableChooser changes and errors (http://www.chiefdelphi.com/forums/showthread.php?t=153467)

bob.wolff68 11-01-2017 15:14

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:
Code:

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

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

int ch = pChoice->GetSelected();
or
Code:

int ch = (int)pChoice->GetSelected();
Both have been unsuccessful. Errors from compilation are:
Code:

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.

Thanks!
roboBob

Joe Ross 11-01-2017 17:02

Re: SendableChooser changes and errors
 
http://wpilib.screenstepslive.com/s/...smartdashboard 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.

euhlmann 11-01-2017 17:09

Re: SendableChooser changes and errors
 
Quote:

Originally Posted by bob.wolff68 (Post 1629436)
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:
Code:

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

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

int ch = pChoice->GetSelected();
or
Code:

int ch = (int)pChoice->GetSelected();
Both have been unsuccessful. Errors from compilation are:
Code:

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.

Thanks!
roboBob

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

bob.wolff68 11-01-2017 17:33

Re: SendableChooser changes and errors
 
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.

roboBob

bob.wolff68 13-01-2017 16:53

Re: SendableChooser changes and errors
 
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.


All times are GMT -5. The time now is 13:31.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi