【发布时间】:2011-07-22 07:33:19
【问题描述】:
我定义了一个简单的类。定义在头文件,实现在cpp文件:
标题:
#ifndef POINT_H
#define POINT_H
class Point {
public:
Point(int x, int y);
int getX();
int getY();
private:
int x, y;
};
#endif
CPP
#include Point.h
Point::Point(int x=2, int y=2) {
this->x = x;
this->y = y;
}
int Point::getX() {
return x;
}
int Point::getY() {
return y;
}
这不是编译,我不知道为什么。另外,当我想实例化一个点时 在其他地方,比如 main.cpp,我在顶部的 #include 是什么,只是 Point.h?如果是,它怎么知道在 Point.cpp 中查找?
【问题讨论】:
-
在 main 中,您确实只包含了 point.h,point.cpp 是一个文件,如果您将其添加到项目中,它将自动包含在内。
-
我认为你缺少引号,应该是#include "Point.h"
-
point.cpp是一个编译单元,就像main.cpp一样。编译它们时,您创建的对象都知道point的结构,因为它们包含相同的头文件。当您链接两个对象时,您将获得可执行文件。你不需要编译main.h的实现,你需要结构的声明。 -
顺便说一句,如果您在构造函数中重命名参数,则不需要使用
this->语法。此外,更喜欢在构造函数中使用 initialization 列表。