1
非const引用的無效初始化我已經只是從C++開始,因爲我想將我的raytracer從Python轉換爲C++。類型'std :: vector <Object*>&'&'&'
不管怎麼說,我試圖編譯我的光線跟蹤與g++
,我得到這個錯誤:
In file included from engine.cpp:10:0:
objects.cpp: In function ‘Vector Trace(Ray&, std::vector<Object*>&, float, int)’:
objects.cpp:97:30: error: conversion from ‘Object*’ to non-scalar type ‘Object’ requested
objects.cpp:110:29: error: conversion from ‘Object*’ to non-scalar type ‘Object’ requested
engine.cpp: In function ‘int main(int, char**)’:
engine.cpp:36:55: error: invalid initialization of non-const reference of type ‘std::vector<Object*>&’ from an rvalue of type ‘std::vector<Object*>*’
objects.cpp:86:8: error: in passing argument 2 of ‘Vector Trace(Ray&, std::vector<Object*>&, float, int)’
我知道所有的這些錯誤都圍繞着我的objects
變量,因爲我真的不知道怎麼樣創建對象數組並在函數內正確使用它。
這裏是我的main()
的一部分:
vector<Object*> objects;
Sphere sphere = Sphere();
sphere.pos = Vector(0, 0, 0);
sphere.radius = 1;
sphere.diffuse = Vector(1, 1, 1);
objects.push_back(&sphere);
和Trace()
減速:
Vector Trace(Ray &ray, vector<Object*> &objects, float roulette, int n = 0) {
Sphere
聲明,像這樣:
class Sphere: public Object {
public:
我真的不知道是什麼做,因爲我已經嘗試調整幾乎每一個關於那vector<>
事情!
編輯
這裏的線:
Object target = objects[i];
'Object target = * objects [i];'修正了那個錯誤,謝謝!現在,只有'Trace()'函數保留。 GCC不喜歡我的'vector <>'參數...... – Blender 2011-05-06 16:26:08
@Blender:錯誤很可能是您將'&objects'傳遞給Trace - 刪除了'&' – Erik 2011-05-06 16:26:58
IT WORKS !!!!我必須弄清所有'*'和'&'事情。謝謝! – Blender 2011-05-06 16:28:36