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

时间:2014-04-17 07:49:18

标签: c++ vector compiler-construction constructor copy-constructor

我试图修复我的矢量无法解决push_back问题,但是我收到了这个错误:

  

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c ++ / V1 /存储器: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;

请帮忙

这里有更多错误信息希望这个帮助:

  

/Users/sum/Documents/3407ICT_Starter_Kit_v8/ProjectOSX/Source/Week3_T.cpp:8:10:   在包含的文件中   /Users/sum/Documents/3407ICT_Starter_Kit_v8/ProjectOSX/Source/Week3_T.cpp:8:

     

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

     

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c ++ / V1 /向量:265:10:   在包含的文件中   /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin /../ LIB / C ++ / V1 /向量:265:

     

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c ++ / V1 / __ bit_reference:15:10:   在包含的文件中   /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin /../ LIB / C ++ / V1 / __ bit_reference:15:

     

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c ++ / V1 /算法:627:10:   在包含的文件中   /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin /../ LIB / C ++ / V1 /算法:627:

     

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c ++ / V1 /向量:925:25:   在实例化功能模板专业化   &#39;的std :: __ 1个:: allocator_traits

     
    

::构造&#39;请求

  
     

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c ++ / V1 /向量:1028:9:   在实例化成员函数&#st; :: __ 1 :: vector&gt; :: __ construct_at_end&#39;请求

     

/Users/sum/Documents/3407ICT_Starter_Kit_v8/ProjectOSX/Source/Week3_T.cpp:466:19:   在成员函数的实例化中,std :: __ 1 :: vector&gt; :: vector&#39;请求

     

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

     

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

1 个答案:

答案 0 :(得分:4)

在标准库中,某些容器&#34;填写&#34;在未明确给出值时使用默认构造函数的值。 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(){}