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

[复制链接]
查看11 | 回复4 | 2008-10-12 22:24:03 | 显示全部楼层 |阅读模式
#include "stdafx.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
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------ 已启动生成: 项目: aaaa, 配置: Debug Win32 ------
1>正在编译...
1>aaaa.cpp
1>f:\c++实验文件\vs2005\aaaa\aaaa\aaaa.cpp(54) : error C2440: 'delete' : cannot convert from 'use_count' to 'void *'
1>
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>生成日志保存在“file://f:\C++实验文件\vs2005\aaaa\aaaa\Debug\BuildLog.htm”
1>aaaa - 1 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

回复

使用道具 举报

千问 | 2008-10-12 22:24:03 | 显示全部楼层
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...
回复

使用道具 举报

千问 | 2008-10-12 22:24:03 | 显示全部楼层
主要问题在use这个类里面:use(seen* oo):nu(oo){} 这句用seen*类型的oo来初始化use的成员变量nudelete nu; //箭头指向这里 这句delete一个不是指针的变量主函数中的错误不细表...
回复

使用道具 举报

千问 | 2008-10-12 22:24:03 | 显示全部楼层
delete 与new配对使用啊。 new到对象分配在堆上,必须用delete删除。例子中的NU属于在栈上分配到,超出作用域自动清除的不用delete的...
回复

使用道具 举报

千问 | 2008-10-12 22:24:03 | 显示全部楼层
nu这是一个成员变量,但是它是静态的,并不是用new动态生成的,所以不能使用delete去删除。它会随着它的容器类解析掉。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行