相关疑难解决方法(0)

Clang:在类中定义的友元函数

我有一个类,它在类中声明和定义了一个友元函数,我从类中的另一个函数调用这个函数.Clang编译器(3.3)抱怨友元函数的未声明标识符.我用MSVC和gcc编译了这个代码,它适用于两个编译器,但现在使用Clang端口我遇到了这个问题.以下是该问题的简化示例:

class foo
{
  friend void bar() {}
  void asd() {bar();}
};
Run Code Online (Sandbox Code Playgroud)

在Clang我得到:error : use of undeclared identifier 'bar'.如果我在类之外声明/定义pla(),它工作正常,但我有一些宏迫使我在类中定义函数.这是Clang中的一些已知问题,还是Clang对C++名称查找更加迂腐,同时仍符合C++标准?在定义/声明类中的函数时,是否有一些已知的解决方法?

c++ clang

1
推荐指数
1
解决办法
1167
查看次数

为什么结构需要友元函数?

我正在尝试构建一个程序,其源代码是我从互联网上下载的.当我尝试编译它时,我收到错误消息

friend declaration specifying a default argument must be the only declaration
Run Code Online (Sandbox Code Playgroud)

这是违规代码:

typedef int Var;
struct Lit {
    int     x;
    // Use this as a constructor:
    friend Lit mkLit(Var var, bool sign = false);
    bool operator == (Lit p) const { return x == p.x; }
    bool operator != (Lit p) const { return x != p.x; }
    bool operator <  (Lit p) const { return x < p.x;  } 
inline  Lit  mkLit(Var var, bool sign) { …
Run Code Online (Sandbox Code Playgroud)

c++

1
推荐指数
1
解决办法
190
查看次数

标签 统计

c++ ×2

clang ×1