+ -
当前位置:首页 → 问答吧 → 问一个头文件定义在 namespace里的类得友元函数的问题

问一个头文件定义在 namespace里的类得友元函数的问题

时间:2011-12-01

来源:互联网

Matrix3x3.h 头文件里面这么写:

C/C++ code

namespace iiippp
{
  class Point2
    {

       friend Vector2 operator-(const Point2& p2, const Point2& p1);

     }
Matrix3x3 operator* (const Matrix3x3& m0, const Matrix3x3& m1);//在Point2这个类外面定义一个函数
 
}


cpp文件里面这样写:

C/C++ code

#include <Math2D/Matrix3x3.h> 
using namespace iiippp; 

Vector2 iiippp::operator-(const Point2& p2, const Point2& p1);
    {
       
     cout<<"csdn"<<endl;
    }

Matrix3x3 iiippp::operator* (const Matrix3x3& m0, const Matrix3x3& m1)
   {
   // \todo implement this function
   return Matrix3x3(Matrix3x3::IDENTITY_MATRIX);
   }



想问问: 第一个友元函数在cpp实现里面写法是对的吗?

还有,Matrix3x3 operator* (const Matrix3x3& m0, const Matrix3x3& m1)这个函数在实现文件里面定义写法对吗?

谢谢

作者: superwavelet   发布时间: 2011-12-01

LZ看下面的修改:
C/C++ code

namespace iiippp
{
  class Point2
    {

       friend Vector2 operator-(const Point2& p2, const Point2& p1);

     }[color=#FF0000];[/color] // 注意类的定义格式
Matrix3x3 operator* (const Matrix3x3& m0, const Matrix3x3& m1);//在Point2这个类外面定义一个函数
 
}





C/C++ code

#include <Math2D/Matrix3x3.h> 
using namespace iiippp; 

Vector2 operator-(const Point2& p2, const Point2& p1)[color=#FF0000];[/color]   // 上面已经有using namespace iiippp; 就不需要单独写了。“;”该去掉
    {
       
     cout<<"csdn"<<endl;
    }

Matrix3x3 operator* (const Matrix3x3& m0, const Matrix3x3& m1)  // 问题同上
   {
   // \todo implement this function
   return Matrix3x3(Matrix3x3::IDENTITY_MATRIX);
   }

作者: wzx_1987   发布时间: 2011-12-01

没什么问题,operator-别忘了return xxx;

作者: xingfeng2510   发布时间: 2011-12-01

引用 1 楼 wzx_1987 的回复:

LZ看下面的修改:
C/C++ code

namespace iiippp
{
  class Point2
  {

  friend Vector2 operator-(const Point2&amp; p2, const Point2&amp; p1);

  }; // 注意类的定义格式
Matrix3x3 ope……


不对,operator-重载函数 去掉了iiippp:: 命名空间的限制,出错了,说是不能获取私有变量

作者: superwavelet   发布时间: 2011-12-01

热门下载

更多