类创建和使用问题
Class Creation and use issues
我创建了一个表示信息包的类,如以下代码所述:
#ifndef PACKET_H_
#define PACKET_H_
namespace std {
class Packet
{
public:
Packet();
virtual ~Packet();
void initClass();
void setStartP(char);
void setAddFrom(char);
void setAddTo(char);
void setpDataSize(char);
void setpNumber(char);
void setChecksum(char);
void setEndP(char);
void LoadData(char);
char getStartP();
char getAddFrom();
char getAddTo();
char getpDataSize();
char getChecksum();
char getEndP();
char getData();
private:
char pB[261];
char pDataMax;
char pDataIndex;
};
} /* namespace std */
#endif /* PACKET_H_ */
#include "Packet.h"
#include <iostream>
namespace std {
Packet::Packet()
{
pDataIndex = 0;
initClass();
}
Packet::~Packet()
{
delete this;
}
void Packet::setStartP(char startChar)
{
pB[0] = startChar;
cout << "in Set!";
}
void Packet::setAddFrom(char fromChar)
{
}
void Packet::setAddTo(char toChar)
{
}
void Packet::setpDataSize(char dataSizeChar)
{
}
void Packet::setpNumber(char packetNumber)
{
}
void Packet::setChecksum(char checksumChar)
{
}
void Packet::setEndP(char endChar)
{
}
void Packet::LoadData(char dataChar)
{
}
char Packet::getStartP()
{
return pB[0];
cout << "in Get";
}
char Packet::getAddFrom()
{
return pB[1];
}
char Packet::getAddTo()
{
return pB[2];
}
char Packet::getpDataSize()
{
return pB[3];
}
char Packet::getChecksum()
{
return pB[4];
}
char Packet::getEndP()
{
return pB[260];
}
char Packet::getData()
{
return pB[6 + pDataIndex];
}
void Packet::initClass()
{
pDataMax = 254;
pDataIndex = 0;
}
}
在这一点上,我只是在测试它,所以我只是实现了其中两种方法。当我尝试运行该程序时:
#include <iostream>
#include "Packet.h"
using namespace std;
Packet myPacket;
void buildPacket();
int main() {
buildPacket();
return 0;
}
void buildPacket( )
{
char startP = 0x28;
cout << "Setting startP!" << endl;
myPacket.setStartP(startP);
cout << "Getting startP" << endl;
cout << myPacket.getStartP() << endl;
cout << "Done";
}
代码很好,编译/构建时没有问题,它是一个运行时,它会失败。这真的让我很震惊,它真的让我怀疑我对C++中创建和使用类的实际了解。该程序将运行到某个点,然后崩溃并显示 Windows 消息。在控制台上,这是崩溃之前
达到的程度:设置启动P! 在设置!入门P (
正如我所看到的,它似乎在删除时崩溃了,但不确定为什么。我四处寻找类似的问题,但找不到它提出这个的原因,我将不胜感激。
不要在析构函数中调用delete this
。对象会自动销毁,因为它超出了范围,无需delete
。
您可以在此处阅读有关它的更多信息:http://en.cppreference.com/w/cpp/language/scope
相关文章:
- 使用C++在Qt3D中创建多个视口时出现问题
- 基本的 c++ 问题:如果我在函数中创建某些内容并返回它会发生什么?
- 在解决链表问题时创建一个额外的节点是一个好习惯吗?
- 在 c++ 中创建和访问 4D 向量时出现问题
- 关于在 c++ 中创建公式的问题
- 在C ++ ASIO中,如何为HTTP或HTTPS创建相同的套接字对象(接口/抽象问题?
- 在另一个类中创建类实例时出现问题
- 为什么我的类电影在创建电影实例时遇到问题?
- 我正在尝试创建一个 C++ 贪吃蛇游戏,但我似乎无法绘制第二个高度边框,我该如何解决这个问题?
- 创建堆栈时出现问题!(街机游戏)
- 使用暂停按钮ARDUINO创建灯光序列时出现问题
- 我的代码在创建楼梯图案时出了什么问题
- 创建二进制文件时出现问题
- 在 QLayout 中创建和删除自定义 QWidgets 时出现 RAM 问题
- 创建一个简单的计算器,添加时遇到问题
- 问题创建和返回锯齿状阵列(错误std :: bad_array_new_length)
- 问题创建一个将一些文本放入qtextedit中的问题
- 问题:创建QStackedLayout
- C++问题创建类对象和循环包含
- c++作用域问题:创建一个矩阵类而不浪费空间