当前位置:  开发笔记 > 编程语言 > 正文

字符串初始化失败:"表达式必须具有整数或未整合的枚举类型"

如何解决《字符串初始化失败:"表达式必须具有整数或未整合的枚举类型"》经验,为你挑选了1个好方法。

我有两个不同的样本:

std::string* to_return = new std::string("I love"  + _name + " so much!");

和:

std::string* to_return = new std::string("I love"  + "Martin" + " so much!");

第一个示例说明了在尝试添加另一个名为"_name"的简单字符串对象时的初始化.在secons示例中,我只连接三个不同的字符串...

尝试制作第二个样本时出现错误:

表达式必须具有整数或未整合的枚举类型

Bathsheba.. 6

"I love" + _name + " so much!"求值为a,std::string因为该类包含双方的重载+运算符const char*,并且_name是一个std::string实例.

但是编译器不能使用任何重载的+,"I love" + "Martin" + " so much!"因为这些只是无效的const char[]build -int 文字+,因此编译失败.

std::string() + "I love" + "Martin" + " so much!",但是会工作,因为诉诸C风格的编译时连接:

std::string("I love" "Martin" " so much!");


最后,如果之后有空间,马丁可能会更加欣赏这个信息"love".



1> Bathsheba..:

"I love" + _name + " so much!"求值为a,std::string因为该类包含双方的重载+运算符const char*,并且_name是一个std::string实例.

但是编译器不能使用任何重载的+,"I love" + "Martin" + " so much!"因为这些只是无效的const char[]build -int 文字+,因此编译失败.

std::string() + "I love" + "Martin" + " so much!",但是会工作,因为诉诸C风格的编译时连接:

std::string("I love" "Martin" " so much!");


最后,如果之后有空间,马丁可能会更加欣赏这个信息"love".


@fdwfgwdfwdfv:在这种情况下,你实际上正在做*指针算术*,结果可能很糟糕.这本身就是另一个问题.
推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有