В принципе, у меня есть файл .h, в котором я определил функцию для генерации буфера элемента и сжатого списка вершин (для OpenGL) с учетом неоптимизированного списка вершин. Однако я столкнулся с некоторыми проблемами, и оказалось, что я не могу получить доступ к содержимому вектора, который я передаю методу. Мой код выглядит следующим образомКомпилятор дает ошибки при попытке распечатать содержимое вектора?
#ifndef LEARNOPENGL_COMMON_H
#define LEARNOPENGL_COMMON_H
#include "ContextBase.h" // this includes all the OpenGL stuff
#include "vector"
#include "iostream"
class common {
public:
template<typename V>
static bool are_equal(int size, V* v1, V* v2) {
for (int x = 0; x < size; x++) {
//if (v1[x] != v2[x]) return false;
}
return true;
}
template<typename V, typename E>
static void GenOptimizedArrays(const int vertex_size, std::vector<V>* vertex_source,
std::vector<V>* vertex_out, std::vector<E>* ebo_out) {
std::vector<V> * vertex_vector = new std::vector<V>();
std::vector<E> * element_vector = new std::vector<E>();
std::cout << vertex_source[0] << std::endl;
}
};
#endif //LEARNOPENGL_COMMON_H
Однако мой компилятор говорит мне, что пытается напечатать (доступ?) vertex_source[0]
является вызывая error- точное (соответствующее) сообщение об ошибке
error: cannot bind ‘std::ostream {aka std::basic_ostream<char>}
’ lvalue to ‘std::basic_ostream<char>&&
Я попытался для поиска в Интернете, но, хотя я нашел похожие проблемы, все, что только что сказал, использовать итератор без объяснения причин почему Я выяснил, как из решений, но не нашел хороших объяснений. Можете ли вы помочь в этом?
vertex_source - это указатель, а не вектор, поэтому ваш код будет таким же, как cout << * vertex_source. Кажется ли тогда проблема очевидной? – QuestionC
Возможно, вы хотели использовать ссылки? например: 'static void GenOptimizedArrays (const int vertex_size, const std :: vector & vertex_source, std :: vector & vertex_out, std :: vector & ebo_out)' таким образом вы можете пропустить перенос векторов alloocations ... –
SHR
@QuestionC больно так. Спасибо – pipsqueaker117