首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-10-27 
在两个namespace之间,类成员方法如何调度namespace MyNamespace{class CMyclass{public:CMyclass()~CMycl

在两个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是干嘛的

热点排行