0

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;
}```

0 Answers0