From: Michael L. <mic...@ho...> - 2004-05-07 11:18:52
|
hello list, I could not get through the simple program with my mingw. Platform: win32 gcc version 3.33(mingw special) The error message reads "test.cpp:6: error: no matching function for call to `fun(int)' " //*******mytest.hpp******* #ifndef MYTEST_H #define MYTEST_H #include <iostream> #include <string> template<typename T> //declaration void fun(T val, const std::string& seperator); //change sperator = " "; then it works;bug ? template<typename T> //definition void fun(T val, const std::string& seperator = " ") { std::cout<<val<<seperator<<std::endl; } #endif //***********test.cpp********* #include <iostream> #include <string> #include "mytest.hpp" int main() { fun(10); } |
From: John G. <jo...@jo...> - 2004-05-07 12:52:38
|
Michael Li said: > template<typename T> //declaration > void fun(T val, const std::string& seperator); //change sperator = " "; > then it works;bug ? > > template<typename T> //definition > void fun(T val, const std::string& seperator = " ") > { Put the default argument in the declaration, not the definition. Put the name in the definition, not the declaration. Also, you misspelled "separater," but anyway, I am not sure if you can take a reference to a static string. template<typename T> void fun (T, const std::string& = " "); template<typename T> void fun (T val, const std::string &separator) {} -- John Gaughan jo...@jo... http://www.johngaughan.net/ |