声明C函数友类并返回C枚举数
Declare C function friend of class and return C enumerator
这是非常类似于这个问题,然而,我试图交朋友的函数返回一个C枚举数。我看不清正确的语法:
#include <iostream>
extern "C" {
enum X {ONE};
int foo();
X bar();
}
namespace a {
class A {
public:
A(int a): a(a) {}
private:
friend int ::foo();
friend X ::bar(); // Doesn't work
int a;
};
}
extern "C" {
int foo() {
a::A a(1);
std::cout << a.a << std::endl;
return ONE;
}
X bar() {
a::A a(2);
std::cout << a.a << std::endl;
return ONE;
}
}
int main()
{
foo(); // outputs: 1
bar(); // doesn't compile
}
friend X ::bar();
不工作。正确的语法是什么?
main.cpp:20:18: error: 'enum X' is not a class or a namespace
friend X ::bar();
^
main.cpp:20:18: error: ISO C++ forbids declaration of 'bar' with no type [-fpermissive]
main.cpp: In function 'X bar()':
main.cpp:22:7: error: 'int a::A::a' is private
int a;
^
main.cpp:35:18: error: within this context
std::cout << a.a << std::endl;
尝试添加括号来解决解析歧义
friend X (::bar)();
相关文章:
- 枚举进程模块在有效句柄上返回无效句柄
- 使用枚举作为条件,if 条件将返回什么,真或假?
- 无法将返回的枚举与枚举进行比较
- 对clang、gcc和icc中开关枚举类返回的处理一致
- 如何为返回枚举元组的 C++ 函数编写 cython 包装器?
- 元编程构造,它返回枚举的基础类型和迭代器的整数
- 如何根据枚举参数返回其他类型
- 沿枚举 c++ 返回变量类型
- 使用枚举确定返回结果的类型(使用宏的黑客)
- 了解 Levenberg Marquardt 枚举返回
- 一种创建将字符串常量返回给枚举的类的廉价方法,反之亦然
- 如何定义在外部类之外返回枚举黑客的嵌入式类的方法?
- 地址数组,带有枚举的返回值
- 是否可以定义一个宏来定义枚举类和返回枚举元素计数的 GetCount() 方法
- 如何在此程序中显示返回枚举类型数据的函数
- 返回枚举,看不懂代码行
- 为什么可以将枚举作为函数变量传递,但不能返回枚举?
- c++静态结构模板方法返回枚举类型
- c++函数返回枚举
- 如何在类之外返回枚举向量