C++重新定义一个类

标签 c++

我想用 C++(非 clr)重新定义一个类。这就是原因

class BabyClass
{
    public:
        string Name;
        int getSiblings(MainClass &mclass)
        {
            int c = mclass.size();
            for(int i=c;i>0;--i)
            {
                if(mclass.at(i).Name != Name)
                    cout << mclass.at(i).Name;
            }
        }
}
class MainClass
{
    public:
       vector<BabyClass> babies;
}

当然这不是我的真实代码,但我想您可以看出问题所在。 我希望我的婴儿类能够访问主类,问题是在编译时它不知道 MainClass 存在,所以要正常修复它我会把 MainClass 放在 BabyClass 之上,但是如果我这样做我可以'没有 BabyClass 的 vector ,因为编译器不知道 BabyClass。 我知道使用函数你可以做类似的事情

int function(string hello);

后来

int function(string hello)
{
    code
}

或者使用虚函数等等。知道我将如何在类里面做到这一点吗?谢谢。

顺便说一下,我知道有人会问这是否真的有必要,所以是的,有必要。

最佳答案

尝试这种前向声明 MainClass 的安排。

class MainClass;

class BabyClass 
{ 
public: 
 string Name; 
 int getSiblings(MainClass &mclass);
};

class MainClass 
{ 
public: 
 vector<BabyClass> babies; 
};

int BabyClass::getSiblings(MainClass &mclass) 
{ 
     // your code which uses mclass
 return 0;
} 

int main(){}

顺便说一句,这不叫redefine。技术是前向声明然后定义它。

关于C++重新定义一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3698336/

相关文章:

c++ - 为什么GRPC AsyncClient在等待完成队列中的下一个结果时抛出Segfault

c++ - 强制在某个静态字段之前初始化全局变量

c++ - 为给定命令调用适当的方法

c++ - 检查 bool vector (范围)是否等于 1 和 0 的序列

c++ - GLSL Shader程序随机编译失败

c++ - 多个线程可以具有只读访问权限的互斥模式

c++ - 多余的字符被添加到字符串

c++ - 这是从单例类派生的标准方法吗?

c++ - 使用模板公开私有(private) Typedef

C++ 创建多个派生类的数组