The_Icer
2016-07-15 05:57
采纳率: 62.5%
浏览 1.0k
已采纳

关于C++文件结构的问题

以下三个文件报错:[Error] ld returned 1 exit status
类的定义(未命名3.h)
class Point
{
public:
Point(int x=0, int y=0):x(x),y(y){}
Point(const Point &p);
~Point(){ count--; }
int GetX() const{return x;}
int GetY() const{return y;}
static void GetC();

private:
int x,y;
static int count;
};
类的实现
#include "未命名3.h"
#include
using namespace std;
int Point::count=0;
Point::Point(const Point &p):x(p.x),y(p.y)

{
count++;
}
void Point::GetC(){
cout<<" Object count="< }
主函数
#include "未命名3.h"
#include
using namespace std;
int main()
{
Point A(4,5);
cout<<"Point A,"<<A.GetX()<<","<<A.GetY();
A.GetC();
Point B(A);
cout<<"Point B,"<<B.GetX()<<","<<B.GetY();
B.GetC();
return 0;
}
求教为什么无法编译

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • blownewbee 2016-07-15 09:47
    已采纳
     文件包含就是把被包含文件“机械地”插入到包含指令对应的位置。相当于你打开被包含文件ctrl+a ctrl+c,打开包含文件,删除include那行,并且再按下ctrl+v的效果。
    你的代码,由于两次包含头文件,导致定义重复了。为了避免定义重复,你可以打开未命名3.h
    
    #ifndef "未命名3_H"
    #define "未命名3_H"
    
    class Point
    {
    public:
        Point(int x=0, int y=0):x(x),y(y){}
        Point(const Point &p);
        ~Point(){  count--; }
        int GetX() const{return x;}
        int GetY() const{return y;}
        static void GetC();
    
    private:
        int x,y;
        static int count;
    };
    
    #endif
    
    这样不管你include几次,都只插入一次,后面的被忽略。
    
    点赞 评论

相关推荐 更多相似问题