Я просто экспериментировал и создавал свой собственный класс строк. (В основном потому, что есть некоторые вещи, которые я хотел создать в пользовательских методах, таких как «toBase64» и т. Д. В любом случае мне было интересно, как вы можете получить доступ к частному члену char *, когда используете & String [0].C++ - Доступ к char * with & String [0] в классе
Я думал вы можете использовать оператор-перегружать, но я в настоящее время это только как String [0] возвращает символ *. (Я знаю, что & оператор указатель).
string.h
namespace CoffeeBeans
{
class _declspec(dllexport) Coffee_String
{
char* String;
int StringLength;
public:
Coffee_String();
Coffee_String(LPCSTR CString);
LPSTR operator[](int);
~Coffee_String();
};
}
String.cpp
#include "stdafx.h"
#include "String.h"
#include <Windows.h>
CoffeeBeans::Coffee_String::Coffee_String() {
this->String = nullptr;
this->StringLength = 0;
}
CoffeeBeans::Coffee_String::~Coffee_String() {
if (String != nullptr) {
delete[] this->String;
this->String = nullptr;
this->StringLength = 0;
}
}
CoffeeBeans::Coffee_String::Coffee_String(LPCSTR CString) {
int StringLength = strlen(CString) + 1;
this->String = new char[StringLength]();
this->StringLength = StringLength - 1;
memcpy_s(this->String, StringLength, CString, StringLength);
}
LPSTR CoffeeBeans::Coffee_String::operator[](int)
{
return this->String;
}
main.cpp
case WM_CREATE:{
CoffeeBeans::Coffee_String String("Test");
//I want to be able to do
//strcpy_s(&String[0], 3, "hi"); //Copy "hi" into the private variable char*String.
//I know this isn't a practical use, I wanted quick example (I would really pass it to recv (WinSock2))
MessageBeep(0);
break;
}
В чем проблема вы переживает? – 0x499602D2
Все эти 'this->' s - просто шум. Избавься от них. В деструкторе вам не нужно проверять, является ли 'String' NULL; 'delete', которые просто отлично. И в деструкторе нет смысла устанавливать 'String' в NULL и' StringLength' в 0; объект уходит, и никто не может видеть эти значения. –
@PeteBecker в порядке Я удалю это из моего деструктора, и меня просто научили из моей книги, что использование этого-> было хорошей привычкой, потому что он знает, что вы имеете в виду этот объект и т. Д. –