- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我运行该程序后,我收到一条错误消息,指出 projectname 已触发断点。我仍然不知道错误是什么。我认为缺少一个成员函数,但有人可以帮助我吗?
#include "AClass.h"
#include <iostream>
using namespace std;
int main()
{
AClass* x = new AClass(10, -1.0);
AClass y = *x;
delete x;
return 0;
}
我的cpp文件中的代码如下:
#include "AClass.h"
#include <iostream>
using namespace std;
// Constructor
AClass::AClass(int len, double val)
: length(len)
{
if (len < 0) {
cout << "Invalid data length = " << len << endl;
data = NULL;
}
else {
data = new double[length];
for (int i = 0; i < length; i++)
data[i] = val;
}
}
// Destructor
AClass::~AClass()
{
// delete data if it is not NULL
if (data) delete[] data;
}
最佳答案
您的 AClass
成员 double* data;
将被复制到这里:
AClass y = *x;
由于您没有提供复制/移动构造函数/赋值运算符,在这些情况下,原始指针将被原样复制,delete[] data
将被由析构函数中的 x
和 y
完成。
处理原始指针时强制读取: https://en.cppreference.com/w/cpp/language/rule_of_three
还有这些:
What is The Rule of Three?
Rule-of-Three becomes Rule-of-Five with C++11?
下面是上述文章中提到的成员函数的示例实现。它有点多 - 并且容易出错,这就是为什么使用标准容器几乎总是更好。
#include <algorithm>
#include <iostream>
#include <utility>
class AClass {
public:
AClass(size_t len, double val);
// rule of five:
AClass(const AClass& rhs); // copy constructor
AClass(AClass&& rhs); // move constructor
AClass& operator=(const AClass& rhs); // copy assignment
AClass& operator=(AClass&& rhs); // move assignment
~AClass();
private:
size_t length; // use an unsigned type since you only accept unsigned values
double* data;
};
// destructor
AClass::~AClass() {
delete[] data;
}
AClass::AClass(size_t len, double val) :
length(len),
data(new double[length])
{
std::fill_n(data, length, val);
}
// copy constructor
AClass::AClass(const AClass& rhs) :
length(rhs.length),
data(new double[length])
{
std::copy_n(rhs.data, length, data);
}
// move constructor
AClass::AClass(AClass&& rhs) :
length(std::exchange(rhs.length, 0)),
data(std::exchange(rhs.data, nullptr))
{}
// copy assignment
AClass& AClass::operator=(const AClass& rhs) {
double* tmpdata = new double[rhs.length];
delete[] data;
length = rhs.length;
data = tmpdata;
std::copy_n(rhs.data, length, data);
return *this;
}
// move assignment
AClass& AClass::operator=(AClass&& rhs) {
// leave the destruction up to the moved-from object
std::swap(length, rhs.length);
std::swap(data, rhs.data);
return *this;
}
int main() {
AClass* x = new AClass(10, -1.0);
AClass y = *x;
delete x;
}
关于c++ - 如何解决错误(projectname 已触发断点)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58632103/
那么,如何在没有 /projectname/ 的情况下使用 ip:8080/projectname/* ,而只使用 ip:8080/ 呢? 已经尝试重定向所有内容,但这并不完全是我所需要的。 最佳答案
我看到对子项目的引用为 project(':projectName') {} 在$ projectRoot / build.gradle中 而且我还看到了对具有单独构建的子项目的引用,例如$ proj
我在使用此代码的操作方法中推送 View Controller 时发生崩溃 let vc = self.storyboard?.instantiateViewControllerWithIdenti
如何更改基本网址:http://Domain/ProjectName/web/index.php至 http://Domain/ProjectName在 Yii2 中。 最佳答案 你应该在基本模板/w
在运行程序时,它可以正常运行,但始终会引发此错误。它说错误来自行: int* temp = new int[length]; 我不知道为什么会这样。程序按升序返回数组,但随后抛出断点。 void me
创建模块而不复制文件时出现此错误settings.gradle : include ':libraries:ProjectB' project(':ProjectB').projectDir = ne
在我运行该程序后,我收到一条错误消息,指出 projectname 已触发断点。我仍然不知道错误是什么。我认为缺少一个成员函数,但有人可以帮助我吗? #include "AClass.h" #incl
当我尝试构建我的 Maven 项目时收到此警告。我搜索过谷歌但没有运气。这真的很烦人,因为我想发布我的项目,但它不会在这个警告下工作(我认为)。构建成功,但是当我尝试部署 war 文件时它不起作用(没
我是 mac 的新手,我收到如下错误 我应该怎么办我已经购买了开发者许可证并创建了供应证书,但我仍然面临这个问题。我不确定为什么会收到此错误任何帮助。 i have followed this you
我在 PodFile 中添加了新的 pod 并运行了命令 pod install 它删除了所有以前的 pod 并失败并出现以下错误 Unable to find a target named `Pro
我正在尝试构建 Preview对于基于 SwiftUI 构建的项目.起初,我创建了名为“VOIP”的项目。经过一段时间的开发和时间,我将它连接到 AppStore Connect并且项目名称的创建方式
我经常看到这种情况,这让我很困惑。 我总是直接在包的内容之后给包加上标题。例如,我的主类的路径从来不是“me.myproject.main.Main.class”,而只是“main.Main.clas
我遇到一个问题,每次我尝试构建项目时,构建状态栏都会挂起并显示“正在附加项目名称” 所以我尝试按照此处的说明进行操作:Attaching to ProjectName直接设置工程文件即可。 但问题是我
我在构建应用程序时弹出此对话框: projectName does not have an architecture that deviceName can execute. 我看过this ques
“@testable import”似乎没有导入原始项目中的所有文件。外部框架的文件作为单独的文件添加到原始项目中,除非检查“目标成员资格”以进行单元测试,否则测试用例似乎无法访问它们。奇怪的是,单元
我的 iOS 程序中出现 EXC_BAD_ACCESS,我怀疑原因出在我的一个匿名 block 中,但其中有很多,我需要稍微缩小候选列表的范围。 堆栈跟踪将当前帧显示为 __lldb_unnamed_
我正在使用 Git,当我尝试使用 XCode 的源代码控制菜单从我当前的分支中提取一个更新的开发分支时,我收到了这个错误消息: The operation could not be performed
我正在尝试运行由 MSBuild 生成的 ProjectName.deply.cmd 当参数 /p:DeployOnBuild=True通过。参数“ComputerName”之一将作为 https:/
我正在使用 Visual Stduio 2015 社区版。我已经加载了一个 C# 项目并希望将其配置为使用影子构建,这样源文件就不会与任何二进制文件或中间构建文件混淆。尝试使用 VS UI 设置 C#
我不确定我是否正确理解了 Sonar 扫描仪分析中参数 ProjectKey、ProjectName 和 branch 的使用。 假设我有一个具有不同分支的项目。当我独立于分支运行分析时,Projec
我是一名优秀的程序员,十分优秀!