C++ 这个自定义类怎么错啊?SOS!!!!SOS!!!

来源:百度知道 编辑:UC知道 时间:2024/06/11 02:15:03
#include "stdafx.h"
#include<iostream>
#include<numeric>
#include<fstream>
#include<string>
#include<vector>
#include<list>
#include<deque>
#include<set>
#include<algorithm>
#include<stack>
#include<queue>
#include<utility>
#include<sstream>
#include<iterator>
#include<map>
using namespace std;
class seen
{
friend class use;
public:
seen():hi("aassa"){}
private:
string hi;
};
class use_count
{
friend class use;
seen* ss;
int count;
use_count(seen* sx):ss(sx),count(1){}
~use_count(){delete ss;}
};
class use
{
public:
use(seen* oo):nu(oo){}
use_count get_seen()
{
++nu.count;
return nu.ss;
}
int cishu()
{
cout<<nu.count<<endl;<

class use_count
{
friend class use;
seen* ss;
int count;
use_count(seen* sx):ss(sx),count(1){}
~use_count(){delete ss;}
};
这个类有错啊,首先,构造函数应该是PUBLIC的
其次,SEEN* SS定义的就不对,楼主没有把use_count定义为seen的有元类
应该改一下:
class seen
{
friend class use_count;
friend class use;
public:
seen():hi("aassa"){}
private:
string hi;
};
class use_count
{
friend class use;
seen* ss;
int count;
public:
use_count(seen* sx):ss(sx),count(1){}
~use_count(){delete ss;}
};
其他的类继续看

nu这是一个成员变量,但是它是静态的,并不是用new动态生成的,所以不能使用delete去删除。它会随着它的容器类解析掉。

delete 与new配对使用啊。 new到对象分配在堆上,必须用delete删除。例子中的NU属于在栈上分配到,超出作用域自动清除的不用delete的

主要问题在use这个类里面:
use(seen* oo):nu(oo){}
这句用seen*类型的oo来初始化use的成员变量nu
delete nu; //箭头指向这里
这句delete一个不是指针的变量
主函数中的错误不细表