I am not sure why, but when I do vec.push_back(tc2);
I get three different instances of candidate constructor not viable:
.
However, the code runs fine without the line vec.push_back(tc2)
. Why is that?
#include <vector>
class TestClass
{
private:
std::string url_;
std::string name_;
long long size_;
public:
TestClass(std::string url, std::string name, long long size)
: url_{url}, name_{name}, size_{size} {}
TestClass() : TestClass{"", "", -1} {}
TestClass(TestClass &source)
: url_(source.getUrl()),
name_(source.getName()),
size_(source.getSize()) {}
std::string getUrl() const;
std::string getName() const;
long long getSize() const;
};
std::string TestClass::getUrl() const{
return url_;
}
std::string TestClass::getName() const{
return name_;
}
long long TestClass::getSize() const {
return size_;
}
int main()
{
TestClass tc{};
TestClass tc2{"a", "b", 222};
std::vector<TestClass> vec;
vec.push_back(tc2);
return 0;
}```