Задать переменную в конструкторе не удалось? - PullRequest
0 голосов
/ 15 мая 2018

Функция GetModel () должна возвращать модель с 36 индексами, но возвращает модель с 0 индексами.

После компиляции: 0 ошибок, 0 предупреждений.

Я знаю, что этот форум ненавидит новичков, но, пожалуйста, будьте вежливы.

int main(int argc, char** argv) {
    Model model;
    for (int i = 0; i < 36; i++) {
        model.indices.push_back(i);
    }

    Class cl(model);
    std::cout << cl.GetModel().indices.size() << std::endl; // should output 36 but outputs 0
}

Класс: [Я думаю, что в конструкторе этого класса есть ошибка]

class Class
{
public:
    Class(Model model){
        m_model = model;

        std::cout << model.indices.size() << std::endl; //output: 36
        std::cout << m_mesh.GetModel().indices.size() << std::endl; //output: 36
    }

    inline Model GetModel() { return m_model; } //m_model.indices.size() should be 36, but is 0

protected:
private:
    Model m_model;
};

Класс модели:

class Model
{
public:
    Model(const std::vector<unsigned int>& indices) {
        this->indices = indices;
    }
    Model(){}

    std::vector<unsigned int> indices;

    Model(const Model& other) {}
    void operator = (const Model& other) {}

1 Ответ

0 голосов
/ 15 мая 2018

Проблема с

Model(const Model& other) {}
void operator = (const Model& other) {}

Это не заставляет их выполнять поведение по умолчанию.

Model(const Model& other) {}

Создает Model, где indices инициализируется по умолчанию (ноль)размер) вместо копирования из other.

void operator = (const Model& other) {}

Просто ничего не делает.Чтобы это исправить, просто избавьтесь от них, так как класс по умолчанию является копируемым

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...