im wanting to make a class called Log. with the template as follows
class Log
{
private:
std::ofstream outputFile;
SYSTEMTIME systemTimeBuffer;
public:
Log( std::wstring error1 );
Log( std::wstring error1, std::wstring error2 );
Log( std::wstring error1, std::wstring error2, std::wstring error3 );
Log( std::wstring error1, std::wstring error2, std::wstring error3,....... );
.........
........
~ Log();
}
here is my problem...i have a custom exception class with the decleration below
class InvalidArgumentException : public std::exception
{
private:
std::wstring m_message;
std::wstring m_argumentName;
std::wstring m_otherInfo;
public:
InvalidArgumentException( const std::wstring& argumentName );
virtual std::wstring what();
std::wstring getOtherInfo();
};
i have 2 functions that return strings.... what() and getOtherInfo()...obviously i could make my log class except 2 std::wstrings and implement it like that....but then the class MUST EXCEPT 2 strings...what if i or another user wants to use my log class later on and it only has 1 string i need to record info on? say if i or another user wants to use this log class in another program and my/their custom exception returns 3 strings....then they have to edit my class to accomodate for accepting more strings in the constructor. My question is how can i implement it so my log class will except any # of strings and be able to log the info accordingly in a .txt file? is this even possible? i guess im asking is it possible to have a variable number of arguments? or does anyone have any ideas to achieve what im trying to achieve?i dont wanna have to destroy and recreate the object each time i wanna insert a string in my file....plus it will keep printing the time for each time i open then log object! -thx for any advice