我试图在D中编写一个小程序,但我一直在收到链接错误(尽管我不使用外部库)。确切的错误消息是Error 42: Symbol Undefined _D4main4mainFAAyaZv6clientMFZC6client6Client
。我的代码是
interface Component
{
public:
string GetIdentifier();
void Activate(JSONValue data);
}
class SomeComponent : Component
{
public:
string GetIdentifier()
{
return "SomeComponent";
}
void Activate(JSONValue data)
{
writeln("Something");
}
}
class Client
{
public:
Component[] components;
void register(Component c)
{
components ~= c;
writeln(c.GetIdentifier());
}
}
void main(string[] args)
{
Client client();
SomeComponent d;
client.register(d);
}
答案 0 :(得分:4)
Client client();
在D中,这将声明一个没有参数的函数,它返回一个Client
实例。
client.register(d);
这将尝试调用声明的函数。但是,由于它没有正文,程序将编译,但无法链接,因为链接器将无法找到函数体。
你可能意味着:
auto client = new Client();