作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个类A,所有声明和定义都放在里面,如下所示:
class A
{
void f(); // forward declaration for a lengthy method
...
void g()
{
f(); // call the above forward-declared method
}
void f() // definition of a lengthy method
{
...
}
}
我不想像 A::f() 那样从类头文件中取出 f(),而只想将所有源代码保留在类中。但是,当我编译它时,出现以下错误:
error C2535: 'void A::f()': member function already defined or declared
note: see declaration of 'A::f'
有没有办法解决这个问题?
最佳答案
您不需要转发声明成员函数。并且您不能在类定义中同时进行前向声明和定义成员函数 - 如果您进行前向声明,则必须在类定义之外定义成员函数。
成员函数定义在“完整的类上下文”中,这意味着它们可以访问类的所有成员,甚至是那些在函数体之后声明的成员。
因此,您的示例可以通过删除 f
的第一个声明来修复。
关于c++ - 如何在同一个类中转发声明一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70585329/
我有一个 JOGL 应用程序,我想以编程方式播放音频文件。这可能吗? 最佳答案 JOGL(以及一般的 OpenGL)不是音频库。也许你想要JOAL ? 关于java - 用 JOGL 发声?,我们在S
我是一名优秀的程序员,十分优秀!