吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 489|回复: 9
收起左侧

[求助] 求助这个写法为什么不对

[复制链接]
pananning 发表于 2024-1-12 16:24
#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;却不保错,这是为什么

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

~零度 发表于 2024-1-12 17:35
你的代码从语法上来说没问题,但是Visual Studio对代码检查比较严格,所以在编译时会更严格一些,用其他的编译器没有问题,有两种解决办法:

第一种:显式地定义出构造函数
[C++] 纯文本查看 复制代码
#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检查",设置为“否”,然后点确定,重新生成解决方案就可以了
微信截图_20240112173509.png
天下客 发表于 2024-1-12 17:36
RulesConcepo 发表于 2024-1-12 18:03
 楼主| pananning 发表于 2024-1-12 18:59
~零度 发表于 2024-1-12 17:35
你的代码从语法上来说没问题,但是Visual Studio对代码检查比较严格,所以在编译时会更严格一些,用其他的 ...

感谢回答,确实显示定义构造函数可以了
Hamon 发表于 2024-1-12 19:22
我第一次见到 main 函数作为友元函数的,可以提供一个返回变量的函数
Gerburious 发表于 2024-1-12 20:45
看起来没什么问题 换个编译器试试呢
iaoedsz2018 发表于 2024-1-13 01:19
~零度 发表于 2024-1-12 17:35
你的代码从语法上来说没问题,但是Visual Studio对代码检查比较严格,所以在编译时会更严格一些,用其他的 ...

真大佬!
 楼主| pananning 发表于 2024-1-13 01:37
Hamon 发表于 2024-1-12 19:22
我第一次见到 main 函数作为友元函数的,可以提供一个返回变量的函数

只是为了测试
LXGZJ237 发表于 2024-1-13 02:39
a类的m没有初始化吧,不过问题不大
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表