gpt4 book ai didi

c++ - 不推荐使用 char 的字符串文字

转载 作者:太空宇宙 更新时间:2023-11-04 15:19:37 24 4
gpt4 key购买 nike

有什么方法可以消除 3 个警告:“不赞成从字符串文字到‘char *’的转换”

这些是我的形状构造器。它们是 shapes 基类的派生类。

我在这 3 行收到警告。

right_triangle right_triangle("RIGHT-TRIANGLE-1", 5.99, 11.99);
square square ("SQUARE-1", 11.99);
rectangle rectangle ("RECTANGLE-1", 11.99, 5.99);

因为所有 3 个类基本上都做同样的事情,所以我将使用 right_triangle 对象作为示例。在构造函数中,创建了有关形状的所有内容。

这是类。

class right_triangle : public shapes
{
char *p_name;
float base,
height,
hypotenuse;
public:
void show_shape ();
right_triangle (char name[17], float base, float height);
~right_triangle() {}

};

这是构造函数。

//**********************************************************************
//* Right triangle constructor *
//**********************************************************************
right_triangle::right_triangle(char name[17], float rt_base, float rt_height)
{
// Print constructor lines
cout << "\n\n\nCreating right triangle shape";
cout << "\n with base = " << rt_base
<< " and height = " << rt_height;

// Cause pointer to point to dinamically allocated memory
if((p_name = (char *)malloc(strlen(name)+1)) == NULL)
fatal_error(1);
else
{
strncpy(p_name, name, strlen(name)+1);
base = rt_base;
height = rt_height;
set_total_sides (3);
set_unique_sides(3);
hypotenuse = hypot(base, height);
set_area (0.5f * base * height);
set_perimeter (base + height + hypotenuse);
}

}

有什么办法可以消除这些警告吗?我使用的是 char 数组,因为我必须使用 strcpy 来获取形状的名称。如有任何帮助或建议,我们将不胜感激。

最佳答案

停止将字符串存储为 C 字符串。使用 std::string

如果您真的需要一个 C 字符串,您可以存储一个 const char*(不能修改文字)。但你没有。

关于c++ - 不推荐使用 char 的字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22441950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com