读书人

在两个namespace之间类成员方法怎么

发布时间: 2013-10-27 15:21:50 作者: rapoo

在两个namespace之间,类成员方法如何调度

namespace MyNamespace{     
class CMyclass{
public:
CMyclass();
~CMyclass();
int GetValue() const;
};
} //MyNamespace

namespace MySameSpace{
class CMyTestClass{
public:
CMyTestClass();
~CMyTestClass();
int GetValue() const;
};
} //MySameSpace


如何在MySameSpace的GetValue方法中调用MyNamespace的GetValue?

[解决办法]
不要忘记了,这两个方法的作用域除了有名字空间的限制,还有类的限制呀.
再说了,类的非静态方法,得通过对象调用呀
[解决办法]
引用:
不要忘记了,这两个方法的作用域除了有名字空间的限制,还有类的限制呀.
再说了,类的非静态方法,得通过对象调用呀

++

#include<iostream>
using namespace mynamespace;
using namespace mysamespace;
namespace mynamespace{
class cmyclass{
public:
cmyclass();
~cmyclass();
int getvalueq() const;
private:
int value;
};
int cmyclass::getvalueq() const
{
return 1;
}
}
namespace mysamespace{
class cmytestclass{
public:
cmytestclass();
~cmytestclass();
int getvalue() const;
};
int cmytestclass::getvalue() const
{
return mynamespace::cmyclass::getvalueq();//得通过对象调用
}
}

[解决办法]
#include<iostream>

namespace mynamespace{
class cmyclass{
public:
cmyclass();
~cmyclass();
int getvalueq() const;
private:
int value;
};
int cmyclass::getvalueq() const
{
return 1;
}
}
namespace mysamespace{
class cmytestclass{
public:
cmytestclass();
~cmytestclass();
int getvalue() const;
};
int cmytestclass::getvalue() const
{
//同一,命名空间,不论写在几处,只有顺序问题,没有代码块的问题。
//大括号,只能隔离,名空间和他的外部空间,
//名空间,本身不受大括号的限制,只要在同一名空间,代码定义的顺序,没问题(即可见的)
//就可以

return cmyclass()::getvalue();
}
}

举例:
namespace mysamespace{
class A{
public:
A():a(10){};
A(int x):a(x){};
~A(){};

int getValue()const {return a;};
private:
int a;
};

void Test();

}

int main(int argc, char* argv[])
{
mysamespace::Test();
return 0;
}
#include<iostream>
using namespace std;
namespace mysamespace{

class TestA{
public:
TestA(){};
~TestA(){};


int getValue()const {return A().getValue();};
private:
int a;
};


void Test(){
TestA ta;
cout<<ta.getValue ()<<endl;
cin.get();
}
}

输出
10
[解决办法]
你要先弄懂namespace是干嘛的

读书人网 >C++

热点推荐