如何在另一个类中创建一个类的实例?

时间:2020-06-26 09:58:48

标签: c++ class vector initialization

我已经在C ++中为3维向量代数编写了一个类,希望在另一个类三角形中使用该类来定义其顶点。编译类时,出现“ Triangle :: vert使用未定义的类Vec3”。

我将如何解决这个问题?遍历谷歌似乎似乎是成员初始化器列表可能是解决方案,尽管我似乎不太正确。在创建三角形类之前,我可以初始化Vec3对象并在main中对其使用代数函数,但是在创建Triangle类之后,我无法再在main中实例化Vec3对象。任何帮助将不胜感激:)

以下是相关代码的一部分:

Triangle.h

#include "Vec3.h"

class Triangle
{
public:
/*----- Variables -----*/
    Vec3 vert; //Vertices, error occurs here
    unsigned r, g, b; //Color
    
/*----- Constructors -----*/
    Triangle();
};

Triangle.cpp

#include "Triangle.h"

Triangle::Triangle()
{
    vert.x = vert.y = vert.z = 0.0;
    r = g = b = 0;
}

Vec3.h

#include <cmath>

class Vec3
{
public:
    /*----- Variables -----*/
    float x, y, z;

    /*----- Constructors -----*/
    Vec3();
    Vec3(const float a);
    Vec3(const float xx, const float yy, const float zz);

Triangle.cpp

#include "Vec3.h"

/*----- Constructors -----*/
Vec3::Vec3()
{
    Vec3::x = Vec3::y = Vec3::z = 0;
}

Vec3::Vec3(const float a)
{
    Vec3::x = Vec3::y = Vec3::z = a;
}

Vec3::Vec3(const float xx, const float yy, const float zz)
{
    Vec3::x = xx; Vec3::y = yy; Vec3::z = zz;
}

Main.cpp

#include "Vec3.h"
#include "Triangle.h"
#include <iostream>

int main()
{
    Vec3 v1(-2.0f,3.0f,3.0f); //Error here:
    //Line 7: 1. "v1 uses undefined class Vec3"
    //Line 7: 2. "initializing: cannot convert from initializer list to int"
    Triangle t1(1,2,3);
    std::cout << t1.vert.x << " " << t1.vert.y << " " << t1.vert.z;
    return 0;

请注意,我并未粘贴所有函数,因为它们似乎可以正常工作,而构造函数和初始化似乎是问题所在。

1 个答案:

答案 0 :(得分:0)

从您的描述来看,自从您上一次对主机进行成功测试以来,Vec3似乎有所更改。 为了确定是这样-尝试在没有Triangle的情况下重建项目并重新测试Vec3。

对于其他助手,请上载Vec3.cpp的代码以及Vec3的工作用法。