Skip to main content
ferro
Lead
November 24, 2023
Solved

Error C2782 'void touchgfx::Line::setLine(T,T,T,T)': template parameter 'T' is ambiguous

  • November 24, 2023
  • 1 reply
  • 969 views

Hi Gfx Team,

When I try to call Line::setLine ()

touchgfx::Line line {};
line.setLine ( .5f, 7, 5.5, 7 );

my MSVC compiler says

Error	C2672	'touchgfx::Line::setLine': no matching overloaded function found
Error	C2784	'void touchgfx::Line::setLine(T,T,T,T)': could not deduce template argument for 'T' from 'int'
Error	C2782	'void touchgfx::Line::setLine(T,T,T,T)': template parameter 'T' is ambiguous
Error (active)	E0304	no instance of function template "touchgfx::Line::setLine" matches the argument list

 

I tried and it seems to help when Line::setLine () is defined like this:

template <typename T1, typename T2, typename T3, typename T4>
void setLine(T1 startX, T2 startY, T3 endX, T4 endY)
{
 setStart(startX, startY);
 setEnd(endX, endY);
}

template <typename T1, class T2>
void setStart(T1 x, T2 y)
{
 setStart(CWRUtil::toQ5<T1>(x), CWRUtil::toQ5<T2>(y));
}

etc.

 

Do you think you could change function templates to this form ?

Thanks

Ferro

 

This topic has been closed for replies.
Best answer by Mohammad MORADI ESFAHANIASL

Hello @ferro ,

I see the issue you are mentioning, but changing that template variable will require more treatment than what it appears. Therefore, I would suggest using all floating numbers in your case, so it would be: 

line.setLine ( 0.5f, 7.0f, 5.5f, 7.0f );

 

I hope this helps you,
Good luck

1 reply

ST Employee
February 6, 2024

Hello @ferro ,

I see the issue you are mentioning, but changing that template variable will require more treatment than what it appears. Therefore, I would suggest using all floating numbers in your case, so it would be: 

line.setLine ( 0.5f, 7.0f, 5.5f, 7.0f );

 

I hope this helps you,
Good luck