Я хотел бы определить копию-конструктор, который просто присваивает объект к другому:Назначить весь объект в конструкторе копирования?
Заголовок:
#ifndef TESTCLASS_HPP
#define TESTCLASS_HPP
#include <boost/math/distributions/geometric.hpp>
class Testclass {
public:
Testclass();
virtual ~Testclass();
private:
Testclass(const Testclass& orig);
int alpha;
boost::math::geometric_distribution <> geometricboost;
};
#endif /* TESTCLASS_HPP */
Реализация:
#include "Testclass.hpp"
Testclass::Testclass() : geometricboost(0) {
}
Testclass::Testclass(const Testclass& obj_ref) {
*this = obj_ref;
}
Testclass::~Testclass() {
}
Сам класс не содержит каких-либо указатели, но в конечном итоге объект. Возможно ли это сделать?
Если нет, то какой самый простой способ просто назначить?
Это дает ошибку:
Testclass.cpp: In copy constructor ‘Testclass::Testclass(const Testclass&)’: Testclass.cpp:13:46: error: no matching function for call to ‘boost::math::geometric_distribution::geometric_distribution()’ Testclass::Testclass(const Testclass& obj_ref) {
Если ваш класс не содержит указателей или других объектов, где семантика копии по умолчанию не работает, тогда вам не нужно писать назначение копии вообще –
Это вызовет оператор копирования (либо по умолчанию или переопределенная версия). Следовательно, применяются обычные оговорки о вызовах методов от конструкторов. В частности: не ожидайте, что какой-либо «виртуальный» будет работать так, как должен. – dhke
Это меньше о том, что необходимо. Мне интересно, если и как это может работать – Qohelet