关于类的问题

zxwitsme 2004-08-27 10:22:35
写了一个Class,遇到一个很奇怪的问题
Class里面的Public成员函数里面不能直接使用本类的Publice成员变量,是不是我弄错了?
应该能访问吧?
...全文
99 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
readi 2004-08-27
  • 打赏
  • 举报
回复

void ss_outb(unsigned short offset, unsigned char data);


void ss_outb(WORD offset, BYTE data)
{
SetPortVal(portAddr+offset,(DWORD)data,1);
}
这怎么能行呢,ss_outb(WORD offset, BYTE data)前面没有CSsd1983PllLib::做修饰
pomelowu 2004-08-27
  • 打赏
  • 举报
回复
的确你没有定义offset啊。函数参数表里的东西不能叫类成员的定义
DentistryDoctor 2004-08-27
  • 打赏
  • 举报
回复
/* Port accessing functions */
BYTE ss_inb(WORD offset)
{
GetPortVal(portAddr+offset,&Val,1);
BYTE by=Val;
return by;
}

void ss_outb(WORD offset, BYTE data)
{
SetPortVal(portAddr+offset,(DWORD)data,1);
}

int ss_portInit(WORD addr)
{
portAddr=addr;
return 0;
}
怎么能这样写呢?

/* Port accessing functions */
BYTE CSsd1983PllLib::ss_inb(WORD offset)
{
GetPortVal(portAddr+offset,&Val,1);
BYTE by=Val;
return by;
}

void CSsd1983PllLib::ss_outb(WORD offset, BYTE data)
{
SetPortVal(portAddr+offset,(DWORD)data,1);
}

int CSsd1983PllLib::ss_portInit(WORD addr)
{
portAddr=addr;
return 0;
}
jazy 2004-08-27
  • 打赏
  • 举报
回复
你那些“port accessing functions”都不属于类,还想访问类成员?
readi 2004-08-27
  • 打赏
  • 举报
回复
SetPortVal()在哪里定义的
zxwitsme 2004-08-27
  • 打赏
  • 举报
回复
提示portAddr,offset都没有定义
zxwitsme 2004-08-27
  • 打赏
  • 举报
回复
// Ssd1983PllLib.h: interface for the CSsd1983PllLib class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SSD1983PLLLIB_H__F1861D25_C19C_4E14_A0CE_543CE30A0B62__INCLUDED_)
#define AFX_SSD1983PLLLIB_H__F1861D25_C19C_4E14_A0CE_543CE30A0B62__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "WinIo.h"




class CSsd1983PllLib
{
public:
CSsd1983PllLib();
WORD portAddr;
DWORD Val;
virtual ~CSsd1983PllLib();
int ss_portInit(unsigned short addr);
unsigned char ss_inb(unsigned short offset);
void ss_outb(unsigned short offset, unsigned char data);
};

#endif // !defined(AFX_SSD1983PLLLIB_H__F1861D25_C19C_4E14_A0CE_543CE30A0B62__INCLUDED_)
zxwitsme 2004-08-27
  • 打赏
  • 举报
回复
// Ssd1983PllLib.cpp: implementation of the CSsd1983PllLib class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SSD1983.h"
#include "Ssd1983PllLib.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

#define PARALLEL_DATA_OFFSET (0)
#define PARALLEL_MODE_OFFSET (0x402)
#define PARALLEL_STATE_OFFSET (0x01)
#define PARALLEL_CTRL_OFFSET (0x02)

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSsd1983PllLib::CSsd1983PllLib()
{
portAddr=0;
}

CSsd1983PllLib::~CSsd1983PllLib()
{

}

/* Port accessing functions */
BYTE ss_inb(WORD offset)
{
GetPortVal(portAddr+offset,&Val,1);
BYTE by=Val;
return by;
}

void ss_outb(WORD offset, BYTE data)
{
SetPortVal(portAddr+offset,(DWORD)data,1);
}

int ss_portInit(WORD addr)
{
portAddr=addr;
return 0;
}
huaboy408 2004-08-27
  • 打赏
  • 举报
回复
当然能使用了,肯定是你搞错了,把代码贴出来看看
DentistryDoctor 2004-08-27
  • 打赏
  • 举报
回复
不会吧,是不是其中一个是static的,而另一个不是哟。将代码帖出来?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧