Why does this simple program segfault?
Bill Baxter
dnewsgroup at billbaxter.com
Tue Aug 14 16:34:25 PDT 2007
BCS wrote:
> Reply to convert,
>
>> Hi,
>>
>> I wrote this very simple class, but the call to fun.testIt()
>> segfaults.
>> If I put the function outside of the class it works just fine.
>> What am I missing?
>> I have tried this with dmd v1.015 and the tango dmd v1.018, same
>> thing.
>> Thank you very much.
>>
>> -------------------
>> import std.stdio;
>> class Tester
>> {
>> void testIt() {}
>> }
>> void main()
>> {
>> Tester fun;
>> fun.testIt();
>> writefln("I made it!");
>> }
>
> you don't new the Tester
>
>> Tester fun = new Tester();
>
>
Isn't there something we can do about this? I do this about once a day
when in a heavy D using phase. It bites newbies and not-so-newbies
alike. I almost think it should be made so that no initializer calls
the default constructor, and if you really want it to be null then you
should initialize with null:
Tester fun; // creates a new Tester
Tester nofun = null; // doesn't create anything
But then there's all sorts of questions that crop up, like what should
"new Tester[5]" do? Or "Tester m_fun;" as a class/struct member.
I guess the best we can hope for is some kind of better error message
than just a generic segfault, or perhaps a compiler warning if you
forget to initialize a class instance.
--bb
More information about the Digitalmars-d-learn
mailing list