我有一个函数:Vector::Vector integrate(Vector::Vector start, Vector::Vector end, long int elapsedtime);
,其中Vector
是我创建了一个类:通过新对象到功能
class Vector {
public:
double x, y, z;
Vector();
Vector::Vector addToSelf(Vector &right);
};
我想打电话给integrate
一个空白Vector
为它的第一个参数。 Vector
的构造函数默认为这样,所以我试图这样做:
acceleration = integrate(Vector::Vector blank, wc.readAccelerometer(), time);
。
然而,这给了我的错误:
error: expected primary-expression before ‘blank’
。
我想也许我并不需要给予Vector
一个名字,当我在integrate
函数调用创建:
acceleration = integrate(Vector::Vector, wc.readAccelerometer(), time);
,但是这给了我同样的错误:
expected primary-expression before ‘,’ token
。
我总是可以传递一个指针,更改integrate
签名以匹配,但这似乎不必要地混乱。我还可以创建一个新的Vector
,然后通过它来integrate
:
Vector::Vector blank;
acceleration = integrate(blank, wc.readAccelerometer(), time);
这工作没有错误,但我还以为这样做就一气呵成将是可能的。我究竟做错了什么?
编辑:感谢Karl von Moor的评论,我修复了它 - 将Vector::Vector
更改为Vector
(因为我没有定义命名空间)并且一切正常。谢谢。
Vector Vector也是一个命名空间,或者我有什么需要通过Vector :: Vector来理解? – 2012-02-19 16:32:52
类“Vector”处于默认名称空间。 'Vector :: Vector blank'是什么意思;'? – Mahesh 2012-02-19 16:36:18
@Karl von Moor我没有定义任何命名空间。交换'Vector :: Vector'为'Vector'修复了一些事情 - 我只是将'Vector'从类struct中重构为它自己的类,并没有点击这个事实,我不应该将它引用为我曾是。谢谢! – simont 2012-02-19 16:36:37