小编Tux*_*xer的帖子

使用默认复制构造函数的C++ vector :: push_back

我有一个类(Uniform),它有一个带有2个参数的构造函数,以及一个默认的复制构造函数(它只包含int,float,std :: vector和std :: map).我创造了一个

std::vector<Uniform> uniforms
Run Code Online (Sandbox Code Playgroud)

我想填写使用

uniforms.push_back()
Run Code Online (Sandbox Code Playgroud)

线.我使用此代码来执行此操作(第二行仅用于测试复制构造函数,因为它当前失败)

Uniform uni(uniform_name,type);
Uniform uni2=uni;
uniforms.push_back(uni2);
Run Code Online (Sandbox Code Playgroud)

默认构造函数工作正常,"uni2 = uni"编译没有问题(因此默认的复制构造函数也可以),但push_back返回(使用g ++作为编译器):

/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../include/c++/4.6.0/ext/new_allocator.h:108:9:erreur :没有匹配函数调用'Uniform :: Uniform(const Uniform&)'

/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../include/c++/4.6.0/ext/new_allocator.h:108:9:注意:候选人是:

./inc/uniform.h:16:5:注意:Uniform :: Uniform(std :: string,Uniform_Type)

./inc/uniform.h:16:5:注意:候选人需要2个参数,1个提供

./inc/uniform.h:14:7:注意:Uniform :: Uniform(Uniform&)

./inc/uniform.h:14:7:注意:参数1从'const Uniform'到'Uniform&'没有已知的转换

谢谢 :)

c++ copy vector copy-constructor

10
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×1

copy ×1

copy-constructor ×1

vector ×1