任何人都可以帮助我吗?我有我的文件:
prueba.h
#ifndef PRUEBA_H
#define PRUEBA_H
#include <iostream>
#include <cstring>
using namespace std;
class cadena{
public:
cadena();
cadena(const char *c);
cadena(int n);
cadena(const cadena &Cad);
~cadena();
void DevDir();
void Asignar(const char *dest);
char *Leer(char *c);
private:
char *cad;
short valor;
friend void tec(cadena obj);
};
#endif
prueba.cpp
#include "prueba.h"
cadena::cadena():cad(NULL),valor(128){}
cadena::cadena(const char *c){
cad = new char[strlen(c)+1];
strcpy(cad,c);
}
cadena::cadena(int n){
cad = new char[n+1];
cad[0] = 0;
}
cadena::cadena(const cadena &Cad){
cad = new char[strlen(Cad.cad)+1];
strcpy(cad,Cad.cad);
}
cadena::~cadena(){
delete[] cad;
}
void cadena::DevDir(){
cout << "dir valor: " << &cad << endl;
}
void cadena::Asignar(const char *dest){
delete[] cad;
cad = new char[strlen(dest)+1];
strcpy(cad,dest);
}
char *cadena::Leer(char *c){
strcpy(c,cad);
return c;
}
void tec(cadena obj){
cout << obj.valor << endl;
}
和我的主要文件:
#include "prueba.h"
int main(){
cadena Cadena1;
tec(Cadena1);
cin.get();
return 0;
}
问题是我的朋友功能(tec)。编译没问题,但是在运行时它会向我显示一个错误,就像内存访问冲突时一样。
如果我删除 main 的这个功能,一切正常。
我使用 Code::blocks 并使用调试器模式向我展示:
- 错误出现在主要的 tec 函数中。
- 错误在 .cpp 文件中,在构造函数复制定义中。
但是,如果我删除 main 的 tec 功能,我不会收到任何错误。