Yodogwood:
The issue comes up with the fact that i cannot make a variable number of these objects, so i would have to know exactly the number of "4's" that are needed. Is there anyway i can work around this, like a va_list or do i need another approach.
There is a solution but Rule #1 applies. You can not have something for nothing.
Your code sets out an array of 10 x 15 x single values, which could be packed into an array of 150 bits, which is about 20 bytes. If we assume you actually want each cell in your grid to hold 5 values (0 to 4), each cell would require 3 bits and it is still only 60 bytes.
If you go down the object route, each cell in your grid requires X and Y properties, consuming 2 bytes at the very least. To do anything useful with an instance of a 'cell' object, your program needs to keep a reference to it's position in memory. So each instance of your 'cell' consumes another two bytes for the pointer - Which brings you up to 6 bytes.
This demonstrates a 'natural truth' of Object Oriented Programming. There is a cost to using a Class and it is rarely worth paying for a simple data type. OOP does not save memory or CPU cycles. OOP makes complex data types, easier for humans to work with.
If you really want to use objects, you might consider the entire grid to be the complex data type.