不能将类型为‘std::string&’的非 const 引用初始化为类型为‘const char*’的临时变量
2017-04-01 16:57
471 查看
#include <stdint.h> #include <iostream> #include <stdio.h> #include <string> using namespace std; void bar(string &s){ std::cout<< s<< std::endl; } int main(){ bar("hello"); }
报错原因:
hello作为临时对像是const类型,而bar这个函数的参数是非const类型,所以报错
正确写法:
#include <stdint.h> #include <iostream> #include <stdio.h> #include <string> using namespace std; void bar(const string &s){ std::cout<< s<< std::endl; } int main(){ bar("hello"); }
相关文章推荐
- 为什么临时对象(变量)不能初始化非const引用对象(变量)
- 非const引用不能指向临时变量
- 指针与引用的初始化&顶层底层const变量初始化问题
- 临时变量不能作为非const类型引用形参的实参
- 二进制“<<”: 没有找到接受“const std::basic_string<char,std::char_traits<char>,std::allocator<char>>”类型的右操作数的运算
- C++ 不能通过‘...’传递有不能平凡复制的类型‘const string {aka const class std::basic_string<char>}’
- C++引用报错:invalid initialization of non-const reference of type ‘std::string&’ from an rvalue of type
- [转]c++中临时变量不能作为非const的引用参数
- 接口引用 如何从一个接口变量取得其接口类型
- 求解:System.IEquatable<T>”不包含“GetEnumerator”的公共定义,因此 foreach 语句不能作用于“System.IEquatable<T>”类型的变量
- C++的const和引用只能在初始化列表里初始化而不能在构造函数体内赋值初始化
- 第二章 变量和基本类型 (续1) 变量 & const 限定符
- 如何解决error C2664: “atof”: 不能将参数 1 从“std::string”转换为“const char *”
- 二进制“<<”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受
- 含有string成员的结构体变量,为什么不能初始化?
- 根据C++标准,如果const的引用被初始化为对一个临时变量的引用,那么它会使这个临时变量的生命期变得和它自己一样
- c++中临时变量不能作为非const的引用参数
- VS2010不能将参数 1 从“std::string”转换为“const char *”解决
- 不能将参数 1 从“int”转换为“std::_Vector_const_iterator<_Myvec>”(VS2010 )
- 宏定义函数指针类型&函数返回左值类值 1。宏定义不分配内存,变量定义分配内存。 2。宏名和参数的括号间不能有空格 3。宏替换只作替换,不做计算,不做表达式求解 //下面是正确的标准的写法 typedef int(FUNC1)(int in); ty