首页 > 原创文章 > 软件开发 > 查看文章

C++为什么不能在未命名的结构上调用成员函数?

所属分类:软件开发 来源: 丁老师原创 更新时间:2025-05-16 08:44 浏览: 1178 IP属地: 深圳
int main() {
    auto hello= struct {
        int test() {
            return 1;
        }
    }().test();
}

有初学C++的小伙伴提问,在运行C++代码时报错,错误提示如下:

<source>:2:18: error: expected expression
    2 |     auto hello= struct {
      |                  ^
1 error generated.

这是什么问题呢?经过分析得知,错误原因是C++初始化错误,初始化必须是一个表达式,而不是另一个声明符。正确的方法是,你可以在lanmbda中定义一个命名结构,然后创建和返回初始化,代码如下:

int main() {
    auto hello= [](){
        struct dummy {
            int test() {
                return 1;
            }
        };
        return dummy{};
    }().test();
}


相关文章

鸿蒙应用打包和发布的流程介绍

最近有个项目,是开发鸿蒙APP,涉及到鸿蒙应用的打包和发布的流程,特此开个文章做一下介绍。打包应用鸿蒙应用主要通过DevEco Studio进行打包,打包后生成的是HAP文件 (HarmonyOS Application Package...

扫二维码自动选择支付方式的实现

今天有小伙伴问,请问丁老师可以实现扫二维码,自动选择支付方式吗?比如支付宝扫码就支付宝支付,微信扫码就微信支付,云闪付扫码就用云闪付银联支付。这种方式可以实现吗?答案是肯定的,这种扫码支付方式,不但可以实现,而且已经大范围的应用在了我们...

微信小程序开发用Vue2和Vue3好?有什么...

有新入行同学向丁老师咨询,在使用Uniapp做微信小程序时,是选择Vue2还是Vue3呢?哪个开发微信小程序更好一点,两者有什么区别呢?今天丁老师给大家介绍一下。首先,我们来介绍一下Vue2和Vue3。Vue2和Vue3是Vue.js框...

Telegram Mini小程序开发介绍

Telegram Mini小程序基于Javascript开发语言,是集成在Telegram应用内的轻量化网页应用。类似微信小程序,可以直接在Telegram对话或群组中运行而无需单独下载。Telegram小程序支持的应用程序:Teleg...

推荐文章

js复制对象改变原值的解决办法

在进行vue开发中,经常会遇到复制对象,赋值新对象后,原对象值被改变的问题,举个例子:let old={ "a":1, "b":2 } let new=old; new['c']=3;...

IntelliJ/phpstorm/webs...

在使用jet brains的ide开发代码时,经常性的会输入单引号或双引号,ide默认有对于引号的自动完成功能,即输入一个引号,自动显示两个,这一点其实做的很不智能,因为在使用时经常会有显示出3个的情况,那么怎么关闭这个功能呢?file-s...

微信小程序从开发到实现微信支付的全过程

微信小程序部分一、完善小程序基本信息1.用管理员账号登录微信小程序(https://mp.weixin.qq.com/);2.左侧菜单选择首页;3.完善小程序的基本信息,包括小程序名称、小程序类目、微信认证、微信备案等。二、小程序开发配置1...

mysql 1267 Illegal mix...

这个问题,用普通sql语句查询,好解决,把表的字符编码改为对应的就可以了。 但在使用视图查询时,比如select 'aaa' as type from xxx; select * from view where type=...