不兼容性錯誤是因爲您已聲明該數組保持指針,但是然後嘗試分配實際std::string
對象的數組而不是指針數組。
如果你想要一個指針數組,你需要修復您的new[]
語句來分配數組的指針,而不是對象的數組的:
class Foo {
std::string* arrayOfPointersToStrings[];
int N;
public:
Foo(int capacity) : N(capacity) {
arrayOfPointersToStrings = new std::string*[capacity];
}
~Foo() {
delete[] arrayOfPointersToStrings;
}
};
但是,如果你想對象的數組,你需要修復您的數組聲明中聲明的對象,而不是指針數組的數組:
class Foo {
std::string* arrayOfStrings;
int N;
public:
Foo(int capacity) : N(capacity) {
arrayOfStrings = new std::string[capacity];
}
~Foo() {
delete[] arrayOfStrings;
}
};
無論哪種方式,你應該使用std::vector
而不是使用手動new[]
/delete[]
:
class Foo {
std::vector<std::string*> arrayOfPointersToStrings;
public:
Foo(int capacity) : arrayOfPointersToStrings(capacity) {}
};
class Foo {
std::vector<std::string> arrayOfStrings;
public:
Foo(int capacity) : arrayOfStrings(capacity) {}
};
爲什麼不使用'的std :: VECTOR'? – NathanOliver
'arrayOfPointersToString = new std :: string * [capacity];' –
它是賦值的一部分... – multiplayer1080