October 24, 2012 Error: no property 'opCall' for type 'app1.ReturnContent' | ||||
|---|---|---|---|---|
| ||||
import std.stdio;
void main()
{
ReturnContent();
}
public class ReturnContent
{
void ReturnContent()
{
writeln("hello");
}
}
Why I am getting this error?
D2
| ||||
October 24, 2012 Re: Error: no property 'opCall' for type 'app1.ReturnContent' | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Suliman | On Wednesday, October 24, 2012 12:00:11 Suliman wrote:
> import std.stdio;
>
> void main()
>
> {
> ReturnContent();
> }
>
>
> public class ReturnContent
> {
> void ReturnContent()
> {
> writeln("hello");
> }
> }
>
> Why I am getting this error?
> D2
It means exactly what it says. ReturnContent is a class, so when you use ReturnContent(), you're trying to call the function operator on the type ReturnContent. That's not going to work unless you overloaded opCall on ReturnContent and made it static. e.g.
public class ReturnContent
{
static void opCall()
{
writeln("static opCall");
}
}
Your ReturnContent function inside of ReturnContent is only ever going to be callable on instances of ReturnContent, not on the type, so you must create an instance of it first. e.g.
auto rc = new ReturnContent;
rc.ReturnContent();
However, it's incredibly bizarre to name a member function the same name as the type. In D, constructors are named this, and member functions are most frequently named with camelCase - e.g. returnType - whereas types are most frequently named with PascalCase - e.g. ReturnType. So, naming a function the same as the type is odd and confusing.
- Jonathan M Davis
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply