【发布时间】:2015-08-26 14:02:54
【问题描述】:
我想定义一个复制构造函数,它只是将对象分配给另一个对象:
标题:
#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:在复制构造函数中'Testclass::Testclass(const Testclass&)': Testclass.cpp:13:46: error: no matching function for 拨电至 'boost::math::geometric_distribution::geometric_distribution()' Testclass::Testclass(const Testclass& obj_ref) {
【问题讨论】:
-
如果您的类不包含任何指针或其他默认复制语义不起作用的对象,那么您根本不需要编写复制分配
-
这将调用复制赋值运算符(默认的或覆盖的版本)。因此,从构造函数调用方法的常见警告适用。特别是:不要期望任何
virtual能够正常工作。 -
这不是关于什么是必要的。我很感兴趣这是否以及如何工作
-
@Qohelet 请发布一个minimal reproducible example 会产生该错误。
标签: c++ this copy-constructor