c++ - 为什么我不能在同一个文件中定义已经前向声明的成员函数?

标签 c++ xcode

我正在做一个项目,我过去使用过 Xcode,最近它一直“不正常”(可能是我)。以下代码是本题的测试代码(不是我的项目)。

(假设所有词法/预处理/命名空间指令都在那里。)

在 Foo.hpp 中

class Foo {
public:
    Foo();
};

Foo::Foo() {
    cout << "constructive" << endl;
}

现在,如果我运行构造 Foo 对象的 main,它会给出重复符号的链接器错误。我应该如何解决这个问题?

最佳答案

快速而肮脏的解决方法是写

内联 Foo::Foo(){

或者在类定义中完整定义函数:

public:
    Foo(){cout << "constructive" << endl;}

更好的解决方法是确保构造函数定义只在一个翻译单元中编译;即把它放在源文件中。

关于c++ - 为什么我不能在同一个文件中定义已经前向声明的成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40338648/

相关文章:

c++ - 排序前修改顺序一致性

c++ - 为什么我重载的逗号运算符没有被调用?

ios - 应如何为推送通知服务设置代码签名?

ios - 将本地化文件添加到新的 IOS 7 应用程序

c++ - 声明一个 union 指针,里面有一个指针

c++ - 缓存 C/C++ 程序中的值的命中/未命中

ios - Xcode 7.1 : Simulator can't be opened because the identity of developer cannot be confirmed

iphone - 根据 iPhone/xcode 上按下的按钮播放声音

objective-c - 从 Controller 返回到前一个

c++ - Qt4中的条形码生成