在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";

10-07 13:37