有什么方法可以实现自定义类型限定符(类似于const)?我只想在具有相同限定条件的函数中,允许对具有正确限定条件的函数进行函数调用。

假设我会:

void allowedFunction();
void disallowedFunction();

//Only allowed to call allowed functions.
void foo()
{
    allowedFunction();
    disallowedFunction(); //Cause compile time error
}

//Is allowed to call any function it wants.
void bar()
{
    allowedFunction();
    disallowedFunction(); //No error
}

之所以这样做,是因为我要确保在特定线程上调用的函数仅调用实时安全函数。由于许多应用程序需要硬实时安全线程,因此在编译时具有某种检测锁的方法将确保我们不会发生许多难以检测的运行时错误。

最佳答案

也许您可以将函数放在一个类中,并让类的允许的 friend 成为这样:

#include <iostream>

class X
{
    static void f(){}
    friend void foo(); // f() is only allowed for foo
};

void foo() // allowed
{
    X::f();
}

void bar() // disallowed
{
    //X::f();  // compile-time error
}

int main()
{

}

您可能可以编写一个疯狂的宏,对要允许/不允许的每个功能透明地执行此操作。

关于c++ - 有没有建立C++自定义限定符的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45419309/

10-11 22:35
查看更多