在类中使用向量

Using vectors within a class

本文关键字:向量      更新时间:2023-10-16

我正在尝试使用用户定义类型的类成员向量。

我的头文件如下:

class Sphere blah blah;
class Scene{  
public:
    std::vector<Sphere> Spheres; //Container of spheres.  
    LightSource Source;
};  

当我尝试访问这个向量时,如下所示,我得到一个错误:

Scene AScene;
Sphere SampleSphere(0,-3,10,5);
(AScene.Spheres).push_back(SampleSphere); 

我想做的是创建一个包含一些东西的场景,包括一个球体向量。我创建了一个场景(AScene),然后使用push_back向其中添加球体。但这不起作用。我有所有必要的预处理器指令,所以很遗憾它并没有那么简单。

错误为:

错误4错误LNK2019:未解析的外部符号"public:__thiscall LightSource::LightSource(void)"(??0LightSource@@QAE@XZ)在函数"public:__thiscall场景::场景(void)"中引用(??0Scene@@QAE@XZ)C:\Users\Stuart\Desktop\THE_PROJECT\THE_PROJECT\Source.obj THE_PROJECT

您没有链接库。

LightSoruce在哪里定义?如果是某个外部库,则需要将该库链接到最终的二进制文件中。

如果它是您自己的库之一,则需要将对象文件链接到最终的二进制文件中。此外,您可能忘记声明LightSoruce::LightSource()的构造函数。

如果在对象级别上有丢失的符号,这是可以的,但在二进制或库中则不可以。

如果您使用gcc,您应该在命令行中使用正确的库名称来获得-llightsourcelib或类似的东西。