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

C++无法通过构造函数初始化类变量 我是C++新手,我通过构造函数设置类变量有问题。 我以我认为正确的方式设置了所有.h和.cpp文件。 但我在第4行和第5行不断出错。我正在使用Visual Studio 2013。错误为Vector3:“类”类型重新定义。并且x,y,z不是类Vector3的非静态数据成员或基类。谢谢你的建议,c++,C++,向量3.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

向量3.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

它应该只是执行

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[])
{

}

移除这个奇怪的类向量3{从CPP文件中的范围,并添加VECURT3::在每个成员函数命名之前,非常感谢:你不需要定义一个拷贝构造函数。你的添加函数等等可能会被制作出来。哦,我的坏,没有意识到。我对C++是很新的。我会记住未来的。非常感谢:@ KHML2040,没问题。哦,对不起,已经纠正了!
#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[])
{

}