compile error " instantiated from here"

K

ken.carlino

Hi,
I have the following compile error instantiated from here, I appreciate
if someone can help me find out why?


g++ -O0 -g3 -Wall -c -fmessage-length=0 -ostddev.o ../stddev.cpp
.../stddev.cpp: In member function 'int
StatUtils::std_dev(std::vector<int, std::allocator<int> >&, int,
int)':
.../stddev.cpp:206: warning: converting to 'int' from 'double'
.../stddev.cpp:215: warning: converting to 'int' from 'double'
.../stddev.cpp:218: warning: converting to 'int' from 'double'
.../stddev.cpp: In member function 'int
StatUtils::mean(std::vector<int, std::allocator<int> >&, int, int)':
.../stddev.cpp:232: warning: converting to 'int' from 'double'
/usr/lib/gcc/i386-redhat-linux/4.0.1/../../../../include/c++/4.0.1/bits/stl_numeric.h:
In function '_Tp std::accumulate(_InputIterator, _InputIterator, _Tp,
_BinaryOperation) [with _InputIterator =
__gnu_cxx::__normal_iterator said:
, _Tp = double, _BinaryOperation = do_std_dev<int>]':
.../stddev.cpp:215: instantiated from here


Here is the code :


template< class T1> class do_std_dev : public binary_function<T1, T1,
T1>
{
public:
do_std_dev(T1 mean): _mean(mean) { }

T1 operator() (T1 initial, T1 element) {
T1 x = element - _mean;
initial = initial + (x * x);
return initial;
}
private:
T1 _mean;
};

int StatUtils::std_dev( vector<int>& v, int start, int end)
{
int stdDev = 0.0;
int mean2 = mean(v, start, end);
vector<int>::iterator startIter = v.begin();
vector<int>::iterator endIter = v.begin();

startIter += start;
endIter += end;

// this is line 215 of stddev.cpp:
int stdDevSum = accumulate (startIter, endIter, 0.0,
do_std_dev<int>(mean2));

return stdDevSum;
}
 
M

Marco Wahl

[...]
../stddev.cpp:215: warning: converting to 'int' from 'double'
[...]

I recommend you provide a complete minimal example without any
conversion-from-int-to-double-issue. Focus e.g. on int first. As far
as I see the conversion is of no relevance for the
standard-deviation-feature you want to have. Maybe clearing the
conversion-issue already leads to a working program.
 
D

Daniel T.

Hi,
I have the following compile error instantiated from here, I appreciate
if someone can help me find out why?


g++ -O0 -g3 -Wall -c -fmessage-length=0 -ostddev.o ../stddev.cpp
../stddev.cpp: In member function 'int
StatUtils::std_dev(std::vector<int, std::allocator<int> >&, int,
int)':
../stddev.cpp:206: warning: converting to 'int' from 'double'
../stddev.cpp:215: warning: converting to 'int' from 'double'
../stddev.cpp:218: warning: converting to 'int' from 'double'
../stddev.cpp: In member function 'int
StatUtils::mean(std::vector<int, std::allocator<int> >&, int, int)':
../stddev.cpp:232: warning: converting to 'int' from 'double'
/usr/lib/gcc/i386-redhat-linux/4.0.1/../../../../include/c++/4.0.1/bits/stl_nu
meric.h:
In function '_Tp std::accumulate(_InputIterator, _InputIterator, _Tp,
_BinaryOperation) [with _InputIterator =
__gnu_cxx::__normal_iterator said:
, _Tp = double, _BinaryOperation = do_std_dev<int>]':
../stddev.cpp:215: instantiated from here


Here is the code :


template< class T1> class do_std_dev : public binary_function<T1, T1,
T1>
{
public:
do_std_dev(T1 mean): _mean(mean) { }

T1 operator() (T1 initial, T1 element) {
T1 x = element - _mean;
initial = initial + (x * x);
return initial;
}
private:
T1 _mean;
};

int StatUtils::std_dev( vector<int>& v, int start, int end)
{
int stdDev = 0.0;
int mean2 = mean(v, start, end);
vector<int>::iterator startIter = v.begin();
vector<int>::iterator endIter = v.begin();

startIter += start;
endIter += end;

// this is line 215 of stddev.cpp:
int stdDevSum = accumulate (startIter, endIter, 0.0,
do_std_dev<int>(mean2));

return stdDevSum;
}

Look at the template for accumulate and remember that "0.0" is a double
whereas "0" is an int. What type does accumulate return?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,228
Members
46,817
Latest member
AdalbertoT

Latest Threads

Top