main is declared as int main(int argc, char *argv[]). It takes all arguments given to your program at command line as char arrays, one for each argument. argv[0] is set to the command/program name. The argv array is terminates with the value NULL. argc counts the number of arguments including argv[0] but without the NULL.
Example: May be your program will be called mysupertruperapp then the call mysupertruperapp Hello World results in
argv[0] = "mysupertruperapp"
argv[1] = "Hello"
argv[2] = "World"
argc = 3
Please post the exact errors you are receiving. Also, please state your IDE. I have a hunch that passing arguments into main() is not what you want to do.
My glance-over intuition tells me :
You need a variable named 'x' in main.
You need a Number::Number(T i) constructor, or modify your old constructor to give 'n' a default value.
As xismn said, you're using a variable called x in main, but you haven't declared it, nor have you given it an initial value.
I notice your Number template class contains a public data member x. Is that really what you intended? None of the methods of Number use it, and many of them hide that data member by declaring an argument of the same name.