On Sun, 24 Oct 2010 01:33:33 +0400, bearophile <[email protected]>
wrote:
Denis Koroskin:
FWIW, similar problem exists:
class Foo
{
void foo1()
{
struct Bar {}
}
void foo2()
{
struct Bar { /* different set of fields and methods */ }
// using Foo.foo2.Bar here
// bang! linker errors
}
}
I have tried this, with no errors:
class Foo {
void foo1() {
struct Bar { string s; }
}
void foo2() {
struct Bar { int x;
int spam() { return 1; }
}
Bar b = Bar(10);
int y = b.spam();
}
}
void main() {
auto f = new Foo;
f.foo2();
}
Are you able to show me code (or a bug report) that doesn't work?
Bye,
bearophile
Slightly modified yours and here we go:
class Foo {
void foo1() {
struct Bar {
string s;
void spam() {
}
}
Bar b = Bar("hello");
b.spam();
}
void foo2() {
struct Bar {
int x;
int spam() { return 1; }
}
Bar b = Bar(10);
int y = b.spam();
}
}
void main() {
auto f = new Foo;
f.foo1();
// f.foo2(); // uncommenting produces different crash
}