如何声明extern(" C")const函数?

时间:2015-11-03 16:07:28

标签: d

我想写D绑定。对于类A的生命,它的someStruct *成员变量永远不会改变,所以我想将它声明为immutable是很自然的。但是,除非我以某种方式管理APICall函数的返回值为const,否则它的构造函数将无法编译。怎么做?

struct someStruct;

const someStruct* APICall();

class A
{
    this()
    {
        this.ptr = myfunc();
    }
    private:
    immutable someStruct* ptr;
}

错误:function app.APICall without 'this' cannot be const

1 个答案:

答案 0 :(得分:2)

您希望在返回值周围使用括号:

const(someStruct*) APICall();

或者如果它永远不会改变,immutable会更好。 (const主要用于函数参数而不是返回值)

在函数声明之前或之后没有括号的const或immutable应用于this参数,这就是为什么错误说出它的内容:你试图将它应用于this isn&# 39;那里。

但是,在执行此操作之前,请确保实际不可变 - 指针永远不会更改并且指向的数据也不会更改。如果通过指针有任何可变性,你应该让它变得可变。