dan*_*pen 1 c++ iostream operator-overloading
我正在Vector3用c ++ 制作一个三维矢量类(称为).现在,我试图重载流插入操作符(<<),以便我可以一次性直接打印所有向量的组件.我从MSD复制了sintax ,但是我得到了3个错误.
错误:传递'const Vector3'作为'float Vector3 :: getX()的'this'参数'丢弃限定符[-fpermissive]
错误:将'const Vector3'作为'float Vector3 :: getY() '的'this'参数传递抛弃限定符[-fpermissive]
错误:将'const Vector3'作为'float Vector3 :: getZ()'的'this'参数传递,丢弃限定符[-fpermissive]
(差异用粗体标出)
在Vector3.h公开场合,我输入了这个函数声明:
friend ostream& operator<<(ostream &os, const Vector3 &vector);
Run Code Online (Sandbox Code Playgroud)
在Vector3.cpp,我实现了它:
ostream& operator<<(ostream& os, const Vector3& vector)
{
os << "(" << vector.getX() << ", " << vector.getY() << ", " << vector.getZ() << ")" << endl;
return os;
}
Run Code Online (Sandbox Code Playgroud)
它应该打印出类似于(x, y, z)x,y和z变量的东西.
在旁注中,不应该vector.getX()使用线->而不是点,因为矢量对象是地址指针?
const为您的get...函数添加限定符.
class Vector3
{
public:
float getX() const {return x;};
};
Run Code Online (Sandbox Code Playgroud)
一个const-qualified功能只是意味着你可以把它叫做一个const类的实例.在这里,吸气剂不会改变任何东西.但是,如果您没有指定,编译器不知道,因此不允许调用可能更改const变量某些内容的函数.
你可以在这里阅读 - const正确性.
点符号是正确的,vector不是一个指针,而是一个引用(即其他一些名称Vector3.&对于我认为的初学者来说,符号可能有点混乱.粗略地说:当你将它应用于一个变量时,它需要它的地址,当它是一个类型的一部分时,它意味着类型是一个引用.例如,见这里或这里.
| 归档时间: |
|
| 查看次数: |
976 次 |
| 最近记录: |