Mã dưới đây dự kiến sẽ in "kevin" Nhưng, nó đang in giá trị rác. Tôi đã kiểm tra trong trình sửa lỗi. Con trỏ được trả về bởi lệnh "operator char *" không hợp lệ. Bất kỳ ý tưởng?"operator char *" issue
class Wrapper
{
private:
char* _data;
public:
Wrapper(const char* input)
{
int length = strlen(input) + 1;
_data = new char[length];
strcpy_s(_data, length, input);
}
~Wrapper()
{
delete[] _data;
}
operator char*()
{
return _data;
}
};
int main()
{
char* username = Wrapper("kevin");
printf(username);
return 0;
}
Đề xuất đầu tiên của tôi là chỉ sử dụng std :: string vì bạn rõ ràng đang sử dụng C++. –
tại sao bạn chỉnh sửa thẻ con trỏ tôi đã thêm? – James
Hãy nhớ rằng bạn thường nên tránh chuyển đổi ngầm. (Và tất nhiên, sử dụng 'std :: vector', hoặc' std :: string', vv) – GManNickG