求助这个写法为什么不对
#include<iostream>using namespace std;
class a
{
friend int main();
private:
int m;
};
int main()
{
a p;
cout << p.m << endl;
system("pause");
return 0;
}不是有默认构造函数吗,为什么编译运行报错,p没有初始化
如果再创建一个函数,把p作为参数传进函数,在函数里执行cout << p.m << endl;却不保错,这是为什么 你的代码从语法上来说没问题,但是Visual Studio对代码检查比较严格,所以在编译时会更严格一些,用其他的编译器没有问题,有两种解决办法:
第一种:显式地定义出构造函数
#include<iostream>
using namespace std;
class a
{
friend int main();
public:
a() {};
private:
int m;
};
int main()
{
a p;
cout << p.m << endl;
system("pause");
return 0;
}
第二种:禁用Visual Studio的SDL检查,步骤:“项目”→“属性”→“C/C++”→“常规”->"SDL检查",设置为“否”,然后点确定,重新生成解决方案就可以了
感觉是编译器的问题 没问题,换个编译器 ~零度 发表于 2024-1-12 17:35
你的代码从语法上来说没问题,但是Visual Studio对代码检查比较严格,所以在编译时会更严格一些,用其他的 ...
感谢回答,确实显示定义构造函数可以了 我第一次见到 main 函数作为友元函数的,可以提供一个返回变量的函数 看起来没什么问题 换个编译器试试呢 ~零度 发表于 2024-1-12 17:35
你的代码从语法上来说没问题,但是Visual Studio对代码检查比较严格,所以在编译时会更严格一些,用其他的 ...
真大佬! Hamon 发表于 2024-1-12 19:22
我第一次见到 main 函数作为友元函数的,可以提供一个返回变量的函数
只是为了测试 a类的m没有初始化吧,不过问题不大
页:
[1]