У меня есть класс с контейнером (содержащим указатель) в качестве члена:
MyClass{
private:
std::vector<MyObject*> _VecMyObjs;
public:
const std::vector<MyObject* const> GetVecMyObj();
}
Теперь я пытаюсь реализовать GetVecMyObj ().Вот то, что я придумал ...
const vector<MyObject *const> ACI_CALL MyClass::GetVecMyObjs()
{
const vector<MyObject *const> VecMyObjs;
VecMyObjs.assign( _VecMyObjs.begin(), _VecMyObjs.end());
return VecMyObjs;
}
Но, конечно, компилятор предупреждает меня, что я использую функцию assign в const-Object.Есть лучший способ сделать это?Я имею в виду, я не хочу, чтобы VecMyObjs изменил VecMyObj вне класса, конечно.Как я могу добиться этого без предупреждения компилятора?
РЕДАКТИРОВАТЬ: Хорошо.Спасибо всем.Теперь это так:
const vector<MyObject *const> ACI_CALL MyClass::GetVecMyObjs()
{
const vector<MyObject *const> VecMyObjs;
VecMyObjs.assign( _VecMyObjs.begin(), _VecMyObjs.end());
return VecMyObjs;
}
Но я не могу обойти функцию присвоения, верно?Например, приведение «оригинала» не работает, если я хочу, чтобы «все» было постоянным.