没有用于初始化'type'的匹配构造函数

No matching constructor for initialization of 'type'

本文关键字:构造函数 type 用于 初始化      更新时间:2023-10-16

我试图修复矢量无法推回的问题,但我得到了这个错误:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchains/usr/lib/c++/v1/memory:1456:36:没有用于初始化"Point"的匹配构造函数

这是我的代码

class Point
{
public:
    int x;
    int y;
    Uint8 r;
    Uint8 g;
    Uint8 b;
    Point(int x, int y, Uint8 r, Uint8 g, Uint8 b) : x(x), y(y), r(r), g(g), b(b) {}
    Point& operator=(Point const &np){
        x=np.x;
        y=np.y;
        r=np.r;
        g=np.g;
        b=np.b;
        return *this;
    }
    Point(const Point& point);
    ;
};

线路可能导致错误:

std::vector<Point> temp(10);

这也不起作用:

std::vector<Point> temp;

请帮助

这里有更多的错误信息,希望能有所帮助:

/用户/sum/Documents/3407ICT_Starter_Kit_v8/ProjectOSX/Source/WWeek3_T.cpp:8:10:在包含的文件中/用户/sum/Documents/3407ICT_Starter_Kit_v8/ProjectOSX/Source/WWeek3_T.cpp:8:

/用户/sum/Documents/3407ICT_Starter_Kit_v8/ProjectOSX/Headers/Week3_T.h:3:10:在包含的文件中/用户/sum/Documents/3407ICT_Starter_Kit_v8/ProjectOSX/Headers/Week3_T.h:3:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchains/usr/lib/c++/v1/vector:265:10:在包含的文件中/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchains/usr/bin/../lib/c++/v1/vector:265:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchains/usr/lib/c++/v1/__bit_reference:15:10:在包含的文件中/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchains/usr/bin/../lib/c++/v1/__bit_reference:15:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchains/usr/lib/c++/v1/algorithm:627:10:在包含的文件中/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchains/usr/bin/../lib/c++/v1/algorithm:627:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchains/usr/lib/c++/v1/vector:925:25:在函数模板专业化的实例化中'std::__1::allocater_traits

::construct'请求此处

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchains/usr/lib/c++/v1/vector:1028:9:在此处请求的成员函数"std::__1::vector>:__construct_at_end"的实例化中

/用户/sum/Documents/3407ICT_Starter_Kit_v8/ProjectOSX/Source/WWeek3_T.cpp:466:19:在此处请求的成员函数"std::__1::vector>::vector"的实例化中

/用户/sum/Documents/3407ICT_Starter_Kit_v8/ProjectOSX/Headers/Week3_T.h:1:5:候选构造函数不可行:需要5个参数,但有0个提供

/用户/sum/Documents/3407ICT_Starter_Kit_v8/ProjectOSX/Headers/Week3_T.h:24:5:候选构造函数不可行:需要单个参数"point",但没有提供任何论据

在标准库中,当未显式给定值时,某些容器会使用默认构造函数"填充"值。vector<Point> temp(10)使用10个元素初始化向量,这些元素填充有您类型的默认构造值。但是当你定义了这个构造函数:

Point(int x, int y, Uint8 r, Uint8 g, Uint8 b) : x(x), y(y), r(r), g(g), b(b)
编译器不会隐式定义默认构造函数,因此现在没有可用的构造函数。您可以通过定义另一个构造函数来修复编译器错误:

Point(){}