workspace/2.c/main.cpp:6:16: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] char *p ="1234567890"; ^ 1 warning generated.
时间: 2024-04-04 22:35:57 浏览: 133
这段代码在编译的时候给出了一个警告,警告内容为ISO C++11不允许将字符串字面值转换为'char *'。具体警告信息为:在第6行,将字符串字面值"1234567890"赋值给了一个char类型的指针p,而ISO C++11不允许这样做,因为字符串字面值是常量,不能被修改,而指针p又是可写的,可能会导致程序运行出错。建议将指针p的类型改为const char*,表示指向常量的指针,可以避免这个警告。
相关问题
/workspace/2.c/main.cpp:4:8: note: replace parentheses with an initializer to declare a variable int f( );
这个错误信息提示您需要使用初始化器来声明变量,而不是使用括号。在 C++ 中,使用括号来声明一个函数,但是使用括号来声明一个变量是非法的。
例如,如果您想声明一个整数变量,您应该这样写:
```
int x = 0;
```
而不是这样写:
```
int x();
```
如果您想声明一个没有参数的函数,您可以这样写:
```
int f() {
// 函数体
}
```
而不是这样写:
```
int f( );
```
希望能帮到你。
/workspace/CppProject/main.cpp:6:12: note: declared private here float x,y; ^ 2 errors generated.
这个错误提示表明,您在类 Point 中声明的成员变量 x 和 y 是私有的,不能在类外直接访问。而在 main 函数中,您尝试使用 cin 来输入这些私有成员变量,因此编译器报错。
为了解决这个问题,您可以提供一个公有的成员函数来设置私有成员变量。例如,您可以添加以下代码:
```
class Point {
private:
float x,y;
public:
void setPoint(float x, float y) {
this->x = x;
this->y = y;
}
double suan() {
return sqrt(x*x+y*y);
}
};
int main() {
Point p[5];
double dis[5];
for(int i=0;i<5;i++){
float x, y;
cin >> x >> y;
p[i].setPoint(x, y);
dis[i]=p[i].suan();
}
...
}
```
这样,您就可以通过 setPoint 函数来设置私有成员变量 x 和 y 的值。在 main 函数中,先声明 x 和 y 变量来存储输入的坐标值,然后使用 setPoint 函数来设置 Point 对象的坐标。
阅读全文