On Sep 21, 1:06 pm, Victor Bazarov<v.baza...@comcast.invalid> wrote:
On 9/21/2010 7:54 AM, dust wrote:
On Sep 21, 4:24 pm, Vladimir Jovic<vladasp...@gmail.com> wrote:
dust wrote:
I have the following senario:
foo.h:
class A
{
...
struct B //public here
{
...
};
void func (const B& var1, int var2);
....
}
Now I have to test the function func in another module (test.cpp
file). I have #included this header file and created a object 'obj' of
type class A.
How can I create an object of type struct B so that I can pass this
object as parameter to function 'func()' which I'm testing in
'test.cpp'
A::B obj;
Isn't this the syntax if the struct is static only??
It *is* static, sort of. There is only one of 'B' in 'A' (IOW, there is
no separate 'B' in every instance of 'A'). If it's easier for you,
think of a nested type definition as "an implicitly static member".
Calling it static still confuses the issue, I think. Types
(classes, enums) always have global binding, and aren't runtime
objects, so don't have lifetime. Static is overloaded in many
ways, but they all involve either name binding or object
lifetime. Since you can't give a class internal binding (one
meaning of static), and it doesn't have a lifetime (the other
meaning), the word has no meaning for classes.
You're being too strict, I think. The meaning of static for members of
("shared" member). That's what I meant.