Yep, I guessed that as soon as I realised that I did that.
Anyway, the code was only an example, designed to sort of mirror what I did in my real code, only in the real code I initialized all variables or pointers to variables inside functions.
Ok, here is what finally compiled:
Code:
#include <iostream>
#include <string>
using namespace std;
struct stringStruct {
stringStruct();
void initialize();
string* str;
string* anotherStr;
const char** arrayOfPointers;
};
stringStruct::stringStruct() {
initialize();
}
void stringStruct::initialize() {
str = NULL;
anotherStr = NULL;
}
void doStuff();
int main() {
doStuff();
cin.get();
return 0;
}
void doStuff() {
stringStruct object;
object.str = new string;
*object.str = "Yes, a string...\n";
*object.str += "Yes, another string...\n";
*object.str += "Yes, even another string...\n";
int sizeOfStr = object.str->size();
object.anotherStr = new string;
int sizeOfArrayOfPointers = 0;
for (int i = 0; i < sizeOfStr; i++) {
char currentChar = object.str->at(i);
if (currentChar != '\n') {
sizeOfArrayOfPointers++; //increment this
}
}
object.arrayOfPointers = new const char*[sizeOfArrayOfPointers];
for (int i = 0; i < sizeOfStr; i++) {
while (object.str->at(i) != '\n') {
object.anotherStr += object.str->at(i);
}
object.arrayOfPointers[i] = object.str->data();
object.anotherStr = NULL; //reset this pointer
}
int sizeOfArray = sizeof(object.arrayOfPointers);
for (int i = 0; i < sizeOfArray; i++) {
cout<< *object.arrayOfPointers[i] <<endl;
}
delete object.str;
delete [] object.arrayOfPointers;
delete object.anotherStr;
}
However, it doesn't output the strings.