文件A.h中
class A
{
 ...
 Class B
{
 void C();
}
}
现在我要在D.cpp中引用class B和C(),请问该怎么做到??

解决方案 »

  1.   

    我已经#include<a.h>了,但是我要使用函数C()和B的实例,我是这样做的
    A::B b=New A::B;
    b.C();
    但是它提示错误:no appropriate default constructor available,那么我应该在哪写,怎么写构造函数?
      

  2.   

    怎么没人回答呀,CSDN上高手都去哪里了呀?
      

  3.   

    A::B *b = new A::B;
    b->C();
      

  4.   

    是的,没有构造函数,但是有一个重载的构造函数,我加了一个构造函数B(),它提示错误:
    public: __thiscall A::B::C()" (??0C@A@@QAE@XZ)
    fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
      

  5.   

    B的作用域引起link时找不到A::B::C()
      

  6.   

    你在A类中申明一个B类的一个对象,这样通过A类就能实现对B类的调用!!不知道好不好用!!
      

  7.   

    我刚刚new了一个工程试了一下,可以
    class CA  
    {
    public:
    CA();
    virtual ~CA(); class B
    {
    public:
    void C(){;};
    };
    };调用
    CA::B *pb = new CA::B;
    pb->C();
      

  8.   

    我为void C()加了函数体,你生明了void C(),没定义吧
      

  9.   

    class A
    {
     public:
     Class B
    {
     void C();
    };
    }
      

  10.   

    sjhunter,你那个里面B也没有构造函数呀,执行不会有问题吗?
      

  11.   

    B前面加A::干吗?似乎没关系吗?
    B *V=new B();
    A::B难道指a.h中的B起限定作用?
    如果只是指a.h中的B起限定作用,这样写我个人认为是有点问题的.#include 本身就是把a.h的内容作为include调用者的一部分加入了.cpp文件中,既然已经成为自己的一部分在加限定符号不是画蛇添足吗?反而容易使便宜器误解.
      

  12.   

    不对呀,没有构造函数的话,确实提示错误:no appropriate default constructor available,会不会因为它是类中类的原因?
      

  13.   

    class A
    {
    public:
    class B
    {
    public:
    void C(){;}
    };
    };
    A::B *b = new A::B();
    b->C();
      

  14.   

    楼主你把完整代码贴出来。同意balloy() 说的。