为了使其正常工作,您需要更改s指向字符数组的成员变量。您没有提供的类定义,String因此很难说出该成员变量的名称是什么。
你也应该改变
char String::element(int i) const
要么
char String::element(size_t i) const
或者
char String::element(unsigned int i) const
这是因为您的字符数组永远不应该使用负索引值访问。如果您不更改i为无符号值,则需要确保它等于或大于零,无论如何都不应该允许这样做。Toy 也应该更改m_str1为,size_t或者unsigned int如果它已经不是,因为字符串不应该有负长度。
应用这些建议将使看起来类似于以下内容String...element()
class String
{
    unsigned int m_str1; // length of character string
    char* m_str; // pointer to the character string
public:
    char String::element(unsigned int i) const;
};
char String::element(unsigned int i) const
{
    if (i < m_str1) 
    {
        return m_str[i]; // Changed s to m_str
    }
    cout << "Error" << endl;
    return 0;
}