IBM专家请进,关于AIX上不同名词空间访问的问题!
dnboy 2008-05-09 04:23:41 我在名称空间A中申请了一个变量(非A、非B的类的实例)s,在名词空间B中对其进行了new,并在B中对该实例s中的一个成员进行了赋值,然后在A中调用S的一个方法,S这个方法不能得到刚才赋的值,而在A中查看堆栈可以看到这个值,对于这种情况需要设置什么用的编译参数?(在windows上面无此问题),AIX上的编译参数为:-qlanglvl=EXT -qstaticinline -qtemplateregistry -q64
如下://非关键代码已经省略
class C
{
public:
C():m_pSQL(NULL){}
~C(){);
void SetSQL(const char* pSQL)//设置查询SQL语句
{
int iLen = strlen(pSQL);
m_pSQL = new char[iLen + 1];
strcpy(m_pSQL, pSQL);
m_pSQL[iLen] = 0;
}
void Open();//打开数据库连接
bool Next()//获取查询结果的下一条记录
{
if(NULL == m_pSQL)
{ //
throw "error"; //此处报错
}
**********
}
private:
char* m_pSQL;
};
namespace A
{
class A1
{
public:
void Function1(const char* pSQL)
{
m_pC->SetSQL(pSQL);
}
private:
C m_pC;
};
}
namespace B
{
using namespace A;
class B1:A1
{
public:
B1(){m_pC = new C();};
void LoadData()
{
m_pC->Next();///此处调用时,查看m_pC->m_pSQL不为空,但是进入到Next后,发现为空
}
};
}
程序逻辑:
B1 p = new B1();
p->Function1("select ....");
p->LoadData();