错误 C2664 “void std::vector<CPoint3D,std::allocator<CPoint3D>>::swap(std::ve

VS2017(C++)问题一 无法将参数 1 从“const char [5]”转换为“char *”(已解决)

深拷贝与浅拷贝学习过程中,遇到了无法将参数 1 从“const char [5]”转换为“char *”问题。检查发现代码应该没问题。应在VS2017中,将项目属性 >> 语言 >> 符合模式调成否就不会报错了(文章结尾附上了代码)

参考流程:
![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQ

在这里插入图片描述)

附录:代码

#define _CRT_SECURE_NO_WARNINGS
#include
using namespace std;

class Person
{

public:

Person()
{
}
Person(char * name, int age)
{
	m_Name =(char *) malloc(strlen(name) + 1);//开辟空间
	strcpy(m_Name,name);
m_Age = age;

}
//浅拷贝,系统会提供默认拷贝构造,而且是简单的值拷贝

char * m_Name;
int m_Age;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

};

void test01()
{
Person p1(“张三”,10);
Person p2(p1);

}
//函数入口地址
int main()
{

test01();
system("pause");//阻塞

return EXIT_SUCCESS;//返回正常退出

  • 1
  • 2
  • 3
  • 4

参考博客:https://blog.csdn.net/Mr_Bobcp/article/details/89089185

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用贝塞尔曲线绘制椭圆,可以按照以下步骤进行: 1. 根据贝塞尔曲线的控制点,计算出贝塞尔曲线的点集。可以使用de Casteljau算法或其他算法来计算。 2. 将椭圆分为四个象限,每个象限使用两个贝塞尔曲线段绘制。每个象限的两个控制点可以根据椭圆的大小和位置计算得出。 3. 使用计算出的控制点绘制贝塞尔曲线段。每个象限需要绘制两个贝塞尔曲线段,共计八个贝塞尔曲线段。 4. 将所有的贝塞尔曲线段的点集拼接起来,就可以得到一个完整的椭圆的点集。 5. 使用MFC中的绘图函数,如LineTo或Polyline,将点集连接起来即可绘制椭圆。 下面是示例代码: ```c++ // 计算贝塞尔曲线的点集 std::vector<CPoint> bezierPoints; CalcBezierPoints(bezierPoints); // 计算椭圆的中心点和轴长 CPoint centerPoint = CalcCenterPoint(bezierPoints); int a = CalcLongAxis(bezierPoints); int b = CalcShortAxis(bezierPoints); // 计算椭圆的四个象限的控制点 std::vector<CPoint> controlPoints; CalcControlPoints(centerPoint, a, b, controlPoints); // 绘制椭圆 CPen pen(PS_SOLID, 1, RGB(0, 0, 0)); CBrush brush(RGB(255, 255, 255)); CPen* pOldPen = pDC->SelectObject(&pen); CBrush* pOldBrush = pDC->SelectObject(&brush); pDC->BeginPath(); // 绘制四个象限的贝塞尔曲线段 for (int i = 0; i < 4; i++) { pDC->MoveTo(controlPoints[i * 2]); pDC->PolyBezier(bezierPoints[i * 2], bezierPoints[i * 2 + 1], controlPoints[i * 2 + 1]); } pDC->EndPath(); pDC->StrokeAndFillPath(); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); ``` 其中,CalcBezierPoints、CalcCenterPoint、CalcLongAxis、CalcShortAxis和CalcControlPoints等函数需要根据具体情况进行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值