C++ 获取初始化构造函数的错误
这是我的流程。cppC++ 获取初始化构造函数的错误,c++,c++11,constructor,namespaces,C++,C++11,Constructor,Namespaces,这是我的流程。cpp #include<iostream> #include "process.h" #include "CString.h" void process(const char* s){ w1::Cstring cs(s); std::cout << cs; } #包括 #包括“process.h” #包括“CString.h” 无效进程(常量字符*s){ w1::Cstring cs(s); std::cout如果构造
#include<iostream>
#include "process.h"
#include "CString.h"
void process(const char* s){
w1::Cstring cs(s);
std::cout << cs;
}
#包括
#包括“process.h”
#包括“CString.h”
无效进程(常量字符*s){
w1::Cstring cs(s);
std::cout如果构造函数没有像在代码中那样修改参数,我建议将构造函数的参数类型改为const char*
。编译器可以隐式地将非const
转换为const
,但不能像代码所示的那样反过来。将构造函数的参数类型改为const char*
,如果构造函数没有像在代码中那样修改参数。编译器可以隐式地将非const
转换为const
,但不能像代码所示,以相反的方式转换。您编写了构造函数Cstring(char*s);
作为一个非常量指针。但是您的函数void进程(const char*s)
正在尝试向它传递一个常量指针。编译器不会自动丢弃常量(这是有充分理由的)
但是,由于该构造函数似乎没有修改其参数,因此应将其更改为常量指针:
Cstring(const char* s);
因此,该错误将得到解决。您将构造函数Cstring(char*s);
编写为使用非常量指针。但是您的函数void process(const char*s)
正在尝试向其传递常量指针。编译器不会自动丢弃常量(这是有充分理由的)
但是,由于该构造函数似乎没有修改其参数,因此应将其更改为常量指针:
Cstring(const char* s);
因此,该错误将被解决。该构造函数应采用const char*
(它也以其他方式被破坏)。该构造函数应采用const char*
(它也以其他方式被破坏)
Cstring(const char* s);