|
because the initialisation is not made as the same time as the declaration (in a class), you cannot use such a thing.
i advise you to do it like this :
<font color=blue>class</font> test {
<font color=blue>int</font> a[10];
<font color=blue>public</font>:
test();
};
<code>--------------------</code>
test::test() {
a[0] = 1;
a[1] = 2;
<font color=green>
a[9] = 10;
}
now, if you have a very long list of values, then you can do the following as better practice :
<font color=blue>class</font> test {
<font color=blue>int</font> a[100];
<font color=blue>public</font>:
test();
};
<code>--------------------</code>
test::test() {
<font color=blue>int</font> tab[100] = {<font color=gray>...val array...</font>};
<font color=blue>for</font> (<font color=blue>int</font> i = 0; i < 100; i++) {
<font color=blue>this</font>->a[i] = tab[i];
}
}
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
|
|
|
|
|
how about good old memcopy?
its faster too.
|
|
|
|
|
yeah, but what i suggested was to have a local array of the valued into the constructor...
then yes, he could memcpy() the array into this->a
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
|
|
|
|
|
toxcct wrote: yeah, but what i suggested was to have a local array of the valued into the constructor...then yes, he could memcpy() the array into this->a
yes, that is what i meant.
|
|
|
|
|
hmm.. but do you find OOP a bit hand cuffed here?
VuNic
|
|
|
|
|
I dont think its anything to do with OOP, its just the way C++ has been defined. And if you are using C++ then you have to design certain things that suits best with the language.
|
|
|
|
|
oh, i'm thinking to something, but not sure about it ; maybe you can confirm my thought:
test::test() : a({1, 2, ..., 10}) {
}
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
|
|
|
|
|
no,
I've tried it and got a compilation error C2536
would be nice if it could be done this way
codito ergo sum
|
|
|
|
|
oops, just checking your reply. No tox didn't work
VuNic
|
|
|
|
|
No Other way sir?
VuNic
|
|
|
|
|
VuNic wrote: No Other way sir ?
what don't you like in it ?
it's simple enough...
otherwise, you could always copy the datas one by one, but wow, you should be very courageous !!
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
|
|
|
|
|
VuNic
|
|
|
|
|
VuNic wrote: .. how to go about here?
If you can use static members:
class test
{
public:
static int a[10];
};
int test::a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
DavidCrow wrote: If you can use static members:
but this implies only one a member shared between all the test objects...
all depends on what he need.
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
|
|
|
|
|
You can't always eat your cake and have it too.
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
static looks good, but still i think we've got an error.
VuNic
|
|
|
|
|
error C2655: 'a' : definition or redeclaration illegal in current scope
VuNic
|
|
|
|
|
You've redefined a someplace else.
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
No David, i points to the line
class MyClass
{
static int aDavid[3];
}
and int the main,
void main()
{
int MyClass::aDavid[3]={1,2,3};
}
Error C2655: 'aDavid' : definition or redeclaration illegal in current scope
VuNic
|
|
|
|
|
VuNic wrote: void main(){
int MyClass::aDavid[3] = {1,2,3};
}
isn't the int too much ?
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
-- modified at 9:42 Monday 30th January, 2006
|
|
|
|
|
VuNic wrote: int MyClass::aDavid[3]={1,2,3};
You can't do this. Since aDavid is now static , it must be initialized outside of any class member or function (i.e., file scope) just like I showed.
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
David strikes again...
VuNic
|
|
|
|
|
VuNic wrote: David strikes again...
Three of these in baseball means the batter is out. Should I be careful?
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
here the problem is the "batter"
VuNic
|
|
|
|
|
VuNic wrote:
here the problem is the "batter"
Please elaborate. What is it that you feel I've done wrong?
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|