【发布时间】:2012-02-28 01:07:37
【问题描述】:
考虑以下简单的类定义 -
// file A.h
#include <iostream>
class A {
public:
static int f();
static const int aa;
};
// file A.cpp
#include "a.h"
using namespace std;
const int A::aa = 10;
int A::f() {
return A::aa;
}
这是我的主文件 -
// main.cpp file
#include "a.h"
#include "b.h"
using namespace std;
const int A::aa = 100;
int A::f();
int main() {
cout << A::aa << "\n";
cout << A::f() << "\n";
}
当我尝试编译 main.cpp 时,编译器抱怨在类外部 main.cpp 中的 A::f() 声明是声明,而不是定义。为什么是这样?我不打算在 main.cpp 中定义 A::f()。它在 A.cpp 中定义,链接器应将 main.cpp 中的 A::f() 声明与其在 A.cpp 中的定义链接。所以我不明白为什么我会收到这个错误。请注意,这是一个编译错误。
【问题讨论】:
-
你为什么有那条线?
-
这里没有包含它。发现问题了。
标签: c++