【发布时间】:2015-12-07 01:14:36
【问题描述】:
所以我试图将一个 int 推回我的向量,但这样做时我不断遇到很多错误。我知道如果我只是将我的向量设为“vector”类型,这将起作用,但我想知道如何使用对象向量来做到这一点,例如下面的对象。
我能做些什么来解决这个问题?
#include <iostream>
#include <vector>
using namespace std;
class ClassName
{
public:
ClassName()
{}
~ClassName()
{}
void AddInt(int num)
{
m_Vector.push_back(num);
}
private:
vector<ClassName> m_Vector;
};
int main()
{
// Create our class an add a few ints
ClassName obj;
obj.AddInt(32);
obj.AddInt(56);
obj.AddInt(21);
return 0;
}
我得到的错误:
[错误] 调用没有匹配的函数 'std::vector::push_back(int&)'
[注意] void std::vector<_tp _alloc>::push_back(const value_type&) [与 _Tp = 类名; _Alloc = std::allocator; std::vector<_tp _alloc>::value_type = ClassName]
【问题讨论】:
-
我不确定您要做什么。您打算如何将整数转换为
ClassName? -
如果你想依赖隐式类型转换,你需要一个构造函数
ClassName(int)。 -
那么我应该如何使用 ClassName(int) 来实现呢?或者有什么办法解决这个问题?
-
删除 c'tor 和 d'tor 定义。编译器将为您正确生成它们,并且每当您明确定义 d'tor 时,它都会隐式删除您需要的复制构造函数。
-
@Lex 看来您是新手,所以我想问一下
ClassName应该代表什么。一个类应该描述一些有形和明显的东西。在您的示例中,不清楚它是否应该描述某种树结构,或者它是否只是为了保存一堆整数。
标签: c++ class object vector stl