as Narue stated, you have to put all the default parameters at the end of the function declaration
as this
TwoDayPackage(const string&,const string&,const string&,const string&,
const string&,const string&,const string&,const string&,
double=0.0,double=0.0,double=0.0,int=0,int=0);
and for the too many arguments problem, you could use vectors..
ex:
TwoDayPackage(const vector<string>& strVector, const vector<double>& doubleVector, const vector<int>& intVector);
and you could use a define to trick the compiler to let you call it with one argument(treat rest like default)
#define TDPackage(x) TwoDayPackage(x, vector<double>( ), vector<int>( ))
edit: i've seen that the string parameters are related to each other, in this case you could create a special storage class and make it the function parameter like this
class StrStorage
{
public:
string m_Data1;
string m_Data2;
// ... etc
StrStorage(const string& nData1, const string& nData2) : m_Data1(nData1), m_Data2(nData2) { }
~StrStorage( );
}
// and than call the function this way
StrStorage strings("string 1", "string 2");
TDPackage(strings); // note you will have to modify the function to accept the StrStorage instead of a vector<string>
// or alternatively
TDPackage(StrStorage("string1", "string2"));// i won't use this one because you have to pass a lot of strings and that's waht you are trying to avoid