C++-无法通过构造函数初始化类变量



我是C++的新手,在通过构造函数设置类变量时遇到了问题
我以我认为正确的方式设置了所有的.h和.cpp文件
但我在第4行和第5行不断出错。我正在使用Visual Studio 2013。错误显示Vector3:"class"类型重新定义。并且x,y,z不是Vector3类的非静态数据成员或基类。谢谢你的建议。

Vector3.h:

#ifndef VECTOR3_H
#define VECTOR3_H
#include <iostream>
#include <array>
class Vector3
{
    public:
        float x;
        float y;
        float z;
        Vector3(float _x, float _y, float _z);
        Vector3(const Vector3 &v);
        Vector3(Vector3 start, Vector3 end);
        Vector3 add(Vector3 v);
        Vector3 sub(Vector3 v);
        Vector3 scale(float scalar);
        float length();
        void normalize();
        float dot(Vector3 v3);
        float angleTo(Vector3 n);
        Vector3 cross(Vector3 v2); 
        static bool isInFront(Vector3 front, Vector3 location, Vector3 target);
        static Vector3 findNormal(Vector3 points[]);
};
#endif

Vector3.cpp:

#include "Vector3.h"
class Vector3
{ // error on this line
    Vector3(float _x, float _y, float _z) : x(_x), y(_y), z(_z) // error initializing variables
    {
    }
    Vector3(const Vector3 &v)
    {
    }
    Vector3(Vector3 start, Vector3 end)
    {
    }

    Vector3 add(Vector3 v)
    {
    }
    Vector3 sub(Vector3 v)
    {
    }
    Vector3 scale(float scalar)
    {
    }
    float length()
    {
    }
    void normalize()
    {
    }
    float dot(Vector3 v3)
    {
    }
    float angleTo(Vector3 n)
    {
    }
    Vector3 cross(Vector3 v2)
    {
    }
    static bool isInFront(Vector3 front, Vector3 location, Vector3 target)
    {
    }
    static Vector3 findNormal(Vector3 points[])
    {
    }
};

您正在重新定义class Vector3

它应该只是(实施);

Vector3::Vector3(float _x, float _y, float _z) : x(_x), y(_y), z(_z)
// ^^^^
{
}

对于所有成员方法,依此类推。

将.cpp主体更改为:这是一个语法错误,您必须在每次函数之前在cpp中提及类名。

#include "Vector3.h"

Vector3::Vector3(float _x, float _y, float _z) : x(_x), y(_y), z(_z) 
{
}
Vector3::Vector3(const Vector3 &v)
{
}
Vector3::Vector3(Vector3 start, Vector3 end)
{
}

Vector3 Vector3::add(Vector3 v)
{
}
Vector3 Vector3::sub(Vector3 v)
{
}
Vector3 Vector3::scale(float scalar)
{
}
float Vector3::length()
{
}
void Vector3::normalize()
{
}
float Vector3::dot(Vector3 v3)
{
}
float Vector3::angleTo(Vector3 n)
{
}
Vector3 Vector3::cross(Vector3 v2)
{
}
static bool Vector3::isInFront(Vector3 front, Vector3 location, Vector3 target)
{
}
static Vector3 Vector3::findNormal(Vector3 points[])
{
}

最新更新