这个错误是由于在使用'memset'函数时发生了类型转换错误。'memset'函数接受'void*'类型的指针作为第一个参数,而你传递了一个'const char*'类型的指针。

要解决这个问题,你可以将'const char*'类型的指针转换为'void*'类型的指针。可以使用'const_cast'来完成这个转换。以下是修正后的代码示例:

#include <iostream>
#include <cstring>

class MyString {
private:
    char* data;

public:
    MyString(const char* str) {
        data = new char[strlen(str) + 1];
        strcpy(data, str);

        // 将内存清零
        memset(const_cast<char*>(data), 0, strlen(data) + 1);
    }

    ~MyString() {
        delete[] data;
    }

    const char* getData() const {
        return data;
    }
};

int main() {
    const char* str = 'hello';
    MyString str1 = str;

    std::cout << str1.getData() << std::endl;

    return 0;
}

在修正后的代码中,我们使用'const_cast'将'const char*'类型的指针转换为'char*'类型的指针,以便将其传递给'memset'函数。这样就可以消除类型转换错误,并正确地将内存清零。

C++ MyString 类设计:修复 memset 错误

原文地址: https://www.cveoy.top/t/topic/UsQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录