游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1597|回复: 2

一个奇怪的问题。。。

[复制链接]

51

主题

134

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2007-12-4 23:53:00 | 显示全部楼层 |阅读模式
#include <iostream>
#include "stdafx.h"
class tclass
{
private:
        int tca;
public:
        tclass(){tca=0;}
        ~tclass(){}
        void setint(const int* ttca)
        {
                tca=*ttca;
                return;
        }
        void out(int* _out)
        {
                *_out=tca;
                return;
        }
};

void fa(void* ca)
{
        ca=new tclass();
        return;
}
void fb(void* ca,const int* ia)
{
        tclass* cb=(tclass*)ca;
        cb->setint(ia);
        return;
}
void fc(void* ca,int* ia)
{
        tclass* cb=(tclass*)ca;
        cb->out(ia);
        return;
}

如果:
int _tmain(int argc, _TCHAR* argv[])
{
        tclass* ta=NULL;
        int a=5;
        int b=0;
        ta=new tclass();
        //fa(ta);
        fb(ta,&a);
        fc(ta,&b);
        return 0;
}
程序顺利通过

如果
int _tmain(int argc, _TCHAR* argv[])
{
        tclass* ta=NULL;
        int a=5;
        int b=0;
        //ta=new tclass();
        fa(ta);
        fb(ta,&a);
        fc(ta,&b);
        return 0;
}
程序失败。。。fa()没有顺利new tclass 。。。为什么呀
这可是决定我命运的一个实验。。。。

27

主题

179

帖子

259

积分

中级会员

Rank: 3Rank: 3

积分
259
发表于 2007-12-5 05:02:00 | 显示全部楼层

Re:一个奇怪的问题。。。

new tclass了,但是没有附值给 ta. void fa(void* ca) 需要改成引用参数。

51

主题

134

帖子

140

积分

注册会员

Rank: 2

积分
140
 楼主| 发表于 2007-12-5 11:03:00 | 显示全部楼层

Re:一个奇怪的问题。。。

做梦的时候想通了。。。
// temp.cpp : 定义控制台应用程序的入口点。
//
#include <stdio.h>
#include <tchar.h>
#include <iostream>
class tclass
{
private:
        int tca;
public:
        tclass(){tca=0;}
        ~tclass(){}
        void setint(const int* ttca)
        {
                tca=*ttca;
                return;
        }
        void out(int* _out)
        {
                *_out=tca;
                return;
        }
};

void fa(void** ca)
{
        *ca=new tclass();
        return;
}
void fb(void** ca,const int* ia)
{
        tclass* cb=(tclass*)*ca;
        cb->setint(ia);
        return;
}
void fc(void** ca,int* ia)
{
        tclass* cb=(tclass*)*ca;
        cb->out(ia);
        return;
}


int _tmain(int argc, _TCHAR* argv[])
{
        tclass* ta=NULL;
        int a=5;
        int b=0;
        //ta=new tclass();
        fa((void**)&ta);
        fb((void**)&ta,&a);
        fc((void**)&ta,&b);
        return 0;
}

太好了

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

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-17 19:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表