我有以下课程:
class Vector
{
public:
float x_;
float y_;
float z_;
Vector(float x, float y, float z) : x_(x), y_(y), z_(z) {}
float scalar(Vector a, Vector b);
};以及以下方法:
float Vector::scalar(Vector a, Vector b)
{
return a.x_ * b.x_ + a.y_ * b.y_ + a.z_ * b.z_;
}现在,我在主函数中初始化Vector a和Vector b:
int main()
{
Vector a = Vector(1,2,3);
Vector b = Vector(4,5,6);
float result;
// how can I call the scalar() method and save the return value in result
return 0;
}但是现在我想知道如何调用标量()方法。我试图声明标量()是静态的,但是它没有工作。
发布于 2018-07-01 12:11:52
你们关系很亲密..。
因为ctor和dtor是“琐碎的”,所以您可以简单地实例化一个虚拟向量,并使用该虚拟标量方法。
但是,如果您不能降低( ctor / dtor)的成本,或者您知道您将逐步增加它们的行为,那么您也可以使用已经存在的方法向量::标量()对本地数据没有任何作用。因此,不需要“静态”。不需要更改代码。
int main()
{
Vector a = Vector(1,2,3);
Vector b = Vector(4,5,6);
// instantiate a dumy vector
float result1 = Vector(0, 0, 0).scalar(a,b); // dummy Vector
// use an existing vector
float result2 = a.scalar(a,b); // method scalar does not modify self.
std::cout << "\n\n " << result1 << " " << result2 << std::endl;
return 0;
}这两个结果是相同的,即32
https://stackoverflow.com/questions/51122055
复制相似问题