C++ 错误C2676二进制'<<';:';标准::奥斯特雷姆';不定义此运算符或到预定义运算符可接受的类型的转换

C++ 错误C2676二进制'<<';:';标准::奥斯特雷姆';不定义此运算符或到预定义运算符可接受的类型的转换,c++,operator-overloading,C++,Operator Overloading,我不理解编译错误C2676 对于下面的代码 #ifndef __VEC_3D_H__ #define __VEC_3D_H__ #include <vector> #include <cmath> namespace Internal { /** very simple 3D vector/ point */ class Vec3D { public: float mX; float mY;

我不理解编译错误C2676

对于下面的代码

#ifndef __VEC_3D_H__
#define __VEC_3D_H__

#include <vector>
#include <cmath>

namespace Internal
{
    /** very simple 3D vector/ point */
    class Vec3D
    {
    public:
        float mX;
        float mY;
        float mZ;

        /// null constructor
        Vec3D(void) {}

        /// construct from data
        Vec3D(float x, float y, float z) : mX(x), mY(y), mZ(z) {}

        inline friend std::ostream& operator<< (std::ostream& os, const Vec3D& v) 
        {
            os << "(" << v.mX << ", " << v.mY << ", " << v.mZ << ")";
            return os;
        }
    };

}

#endif
\ifndef\uu VEC\u3d\H__
#定义向量3D__
#包括
#包括
命名空间内部
{
/**非常简单的3D矢量/点*/
类Vec3D
{
公众:
浮动mX;
漂浮我的心;
浮动mZ;
///空构造函数
Vec3D(void){}
///从数据构造
Vec3D(float x,float y,float z):mX(x),mY(y),mZ(z){}
内联好友标准::ostream&operator缺少
#在顶部包含

修好了。
(哦,C++中编译错误的严重性是什么)…< /P> < P>更改<强> BBVEC3D < /St> > <强> VEC3D >:/P>
BOBVec3D(void) {}
BOBVec3D(float x, float y, float z) : mX(x), mY(y), mZ(z) {}
inline friend std::ostream& operator<< (std::ostream& os, const BOBVec3D& v);
BOBVec3D(void){
BOBVec3D(float x,float y,float z):mX(x),mY(y),mZ(z){
内联好友std::ostream&operator我有这个错误


错误C2676 binary'在切圆注释上,保留了一行中包含两个下划线的所有标识符,以及以下划线和大写字母开头的所有标识符。在您自己的代码中定义此类标识符是UB。将
使用命名空间内部;
放在标题中有点违背了创建命名空间的目的。Y您可能想查看一个扩展,例如或,他们犯了这样的小错误几乎不可能。作为一个新手,我发现它非常有用。:-)我安装了Visual Assist,并将试用一个月,但对于这个问题,它没有帮助。(我评论了#include in the top,保存并编译了它,并且:我很抱歉。我实际上自己也使用了Resharper,但是很多人更喜欢使用VAX(出于大型项目的性能原因,尽管我没有遇到任何问题),所以我想我也应该提到它。我用Resharper检查了您的代码,它似乎确实收到了效果。嗯:),你提到了ReSharper,但你链接到了wholetomato.com:)你是想链接到正确的吗?啊,我安装了ReSharper,我对这一点感到困惑。我看到:顶部的红色突出显示显示:“预编译头必须包含在源文件的顶部”,和底部:您认为与您的@notanalien相比,您缺少了什么?很抱歉,我们正在匿名化代码,并且遗漏了这些条目
Vec3D(void) {}
Vec3D((float x, float y, float z) : mX(x), mY(y), mZ(z) {}
inline friend std::ostream& operator<< (std::ostream& os, const Vec3D& v);