C++学习记录001——VS2019报错“C2011 ”tagPOINT“:“struct“类型重定义

博客作者在创建C++动态链接库时遇到问题,尝试仿照MFC的CPoint类定义自己的Point类。由于类中不能直接包含自身类型成员,作者使用结构体解决构造函数问题,但遇到重定义错误。删除结构体定义后,发现VS2019未报错,原来系统已有POINT结构体定义。作者最终决定删除自定义结构体,直接使用内置的POINT,并成功编译。此过程让作者发现并理解了命名冲突的问题。

工具:VS2019

背景:想创建一个C++动态链接库,里面需要用到Point类,但是虽然MFC项目里有CPoint类,但是C++动态链接库里面没有现成的Point类,所以,我准备自己仿照MFC中CPoint类的定义重新写一个,结果第一步就报了如题的错误,

代码如下:

/////XXXABC.h
#pragma once
#include <iostream>
using namespace std;
typedef struct tagPOINT
{
	LONG x;
	LONG y;
} POINT;

class Point
{
	double X;
	double Y;
	
public:
	Point();    //创建一个未初始化的点
	Point(double X_Position, double Y_Position);  //创建一个已知坐标的点
	Point(POINT pointer);   //由另一个点创造

public:
	double getX();
	double getY();
	void setX(double X_Value);
	void setY(double Y_Value);
	double distance(Point p);

};

因为一般情况下,类中不能定义本身类型的成员(PS:之所以说一般情况,是因为看见有人的类中就定义了本身类型的成员,但是我这个菜鸟不会,所以暂时先不研究人家是怎么实现的,先用最基本的方法),这样的话,我的类中的第三个构造函数“由另一个点创造点”就没法实现。所以就有了前面的struct,这样,我的那个构造函数中就可以用"POINT“了,但就是这样还是报了C2011的错。

//看着不是什么大错,我想着这个问题或许可以解决

我也上网找了一下资料,说把上面代码中类定义部分放到namespace{&n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值