0

我在头文件中创建了以下类:

class clsJoinFeeder
{
public:
    vector<vector<float>>&Floats;
    vector<vector<unsigned char>>&UnsignedChars;
};

我还没有使用这个类(以避免任何额外的错误)。

编译器告诉我“找不到兼容的构造函数”。

为什么编译器告诉我这个?我不想使用构造函数。我的课程只是为了保持这些价值观。

4

2 回答 2

3

您的类不包含任何数据值,它包含对具有数据值的(外部)容器的引用。引用必须用一些东西初始化,因为在对象构造之后它们的指针不能改变(如果构造函数中没有给出指针,它们就变得无用了)。

如果您想要一个保存数据的类,您可能应该在不使用引用的情况下定义它:

class clsJoinFeeder
{
public:
    vector<vector<float> > Floats;
    vector<vector<unsigned char> > UnsignedChars;
};

如果需要引用,则必须定义构造函数来初始化它们:

class clsJoinFeeder
{
public:
    vector<vector<float> > &Floats;
    vector<vector<unsigned char> > &UnsignedChars;

    clsJoinFeeder(         
        vector<vector<float> > &Floats0,
        vector<vector<unsigned char> > &UnsignedChars0
    ) : Floats(Floats0), UnsignedChars(UnsignedChars0) 
    { /*or maybe some code here*/ }
};
于 2013-10-29T11:44:50.377 回答
0

该类包含两个对向量的引用。但是对于哪些向量?要创建该类的实例,您需要一种方法来初始化引用以指向一些真实对象。

由于您自己没有声明构造函数,因此编译器会尝试生成默认构造函数。这失败了,因为它不知道如何初始化引用。

于 2013-10-29T11:47:22.540 回答