C++ C++;找不到兼容的标准构造函数

C++ C++;找不到兼容的标准构造函数,c++,class,vector,constructor,C++,Class,Vector,Constructor,我在头文件中创建了以下类: class clsJoinFeeder { public: vector<vector<float>>&Floats; vector<vector<unsigned char>>&UnsignedChars; }; clsJoinFeeder类 { 公众: 向量和浮动; 向量&无符号字符; }; 我还没有使用这个类(为了避免任何额外的错误) 编译器告诉我“没有找到兼容的构造函数” 为什

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

class clsJoinFeeder
{
public:
    vector<vector<float>>&Floats;
    vector<vector<unsigned char>>&UnsignedChars;
};
clsJoinFeeder类
{
公众:
向量和浮动;
向量&无符号字符;
};
我还没有使用这个类(为了避免任何额外的错误)

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


为什么编译器会告诉我这些?我不想使用构造函数。“我的类”仅用于保存这些值。

您的类不保存任何数据值,它保存对具有数据值的(外部)容器的引用。引用的对象必须用某些东西初始化,因为在对象构造之后,它们的指针对象不能被更改(若构造函数中并没有给出指针对象,那个么它们将变得无用)

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

class clsJoinFeeder
{
public:
    vector<vector<float> > Floats;
    vector<vector<unsigned char> > UnsignedChars;
};
clsJoinFeeder类
{
公众:
向量浮动;
向量无符号字符;
};
如果需要引用,则必须定义用于初始化引用的构造函数:

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*/ }
};
clsJoinFeeder类
{
公众:
向量和浮动;
向量&无符号字符;
clsJoinFeeder(
向量和浮点0,
向量和无符号字符0
):Floats(Floats0)、UnsignedChars(UnsignedChars0)
{/*或者这里的一些代码*/}
};

您的类不包含任何数据值,它包含对具有数据值的(外部)容器的引用。引用的对象必须用某些东西初始化,因为在对象构造之后,它们的指针对象不能被更改(若构造函数中并没有给出指针对象,那个么它们将变得无用)

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

class clsJoinFeeder
{
public:
    vector<vector<float> > Floats;
    vector<vector<unsigned char> > UnsignedChars;
};
clsJoinFeeder类
{
公众:
向量浮动;
向量无符号字符;
};
如果需要引用,则必须定义用于初始化引用的构造函数:

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*/ }
};
clsJoinFeeder类
{
公众:
向量和浮动;
向量&无符号字符;
clsJoinFeeder(
向量和浮点0,
向量和无符号字符0
):Floats(Floats0)、UnsignedChars(UnsignedChars0)
{/*或者这里的一些代码*/}
};

您的类不包含任何数据值,它包含对具有数据值的(外部)容器的引用。引用的对象必须用某些东西初始化,因为在对象构造之后,它们的指针对象不能被更改(若构造函数中并没有给出指针对象,那个么它们将变得无用)

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

class clsJoinFeeder
{
public:
    vector<vector<float> > Floats;
    vector<vector<unsigned char> > UnsignedChars;
};
clsJoinFeeder类
{
公众:
向量浮动;
向量无符号字符;
};
如果需要引用,则必须定义用于初始化引用的构造函数:

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*/ }
};
clsJoinFeeder类
{
公众:
向量和浮动;
向量&无符号字符;
clsJoinFeeder(
向量和浮点0,
向量和无符号字符0
):Floats(Floats0)、UnsignedChars(UnsignedChars0)
{/*或者这里的一些代码*/}
};

您的类不包含任何数据值,它包含对具有数据值的(外部)容器的引用。引用的对象必须用某些东西初始化,因为在对象构造之后,它们的指针对象不能被更改(若构造函数中并没有给出指针对象,那个么它们将变得无用)

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

class clsJoinFeeder
{
public:
    vector<vector<float> > Floats;
    vector<vector<unsigned char> > UnsignedChars;
};
clsJoinFeeder类
{
公众:
向量浮动;
向量无符号字符;
};
如果需要引用,则必须定义用于初始化引用的构造函数:

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*/ }
};
clsJoinFeeder类
{
公众:
向量和浮动;
向量&无符号字符;
clsJoinFeeder(
向量和浮点0,
向量和无符号字符0
):Floats(Floats0)、UnsignedChars(UnsignedChars0)
{/*或者这里的一些代码*/}
};

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


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

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


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

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


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

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


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

谢谢。我想你是对的。我觉得我的整个构造都不好。我会尝试改变这一点。我知道这是一个有趣的问题,但如果我使用引用或不使用引用又有什么区别呢?当我不使用引用时,这是否意味着整个UnsignedChars[10][100]@tmighty Reference本身并不保存数据,它就像指针,更具体地说,它就像“已经被自身解除引用”的常量指针——让我们有
char*const p=&x
char&r=x
r
(*p)
几乎相同,并且在大多数代码构造中可以互换。向量与其他对象一样,在指定它们(它们本身,而不是它们的字段)或按值传递它们时会被复制。与