在GCC编译器中创建一个新的字符串类并为其分配一个char*
数组时遇到一个奇怪的问题。源代码:
#include "../Include/StdString.h"
StdString::StdString()
{
//ctor
internstr = std::string();
}
char* StdString::operator=(StdString other) {
return other.cstr();
}
StdString StdString::operator+(StdString other) {
StdString newstr = StdString();
newstr.internstr = internstr+other.internstr;
return newstr;
}
void StdString::operator=(char* other) {
internstr = other;
}
StdString::~StdString()
{
//dtor
}
char* StdString::cstr() {
return (char*)internstr.c_str();
}
错误:请求从
char*
转换为非标量类型StdString
。std::string
如何进行分配? 最佳答案
std::string可以进行转换,因为它定义了conversion constructor。这样的事情。
class std::string {
// ...
std::string(const char *);
};
注意:实际的std::string更复杂。
使用赋值运算符,您应该可以
StdString str;
str = "hello";
但不是
StdString str = "hello";