C++中的类顺序

Class Sequence in C++?

本文关键字:顺序 C++      更新时间:2023-10-16

我有以下代码,但它找不到父类下面的类:

class Child
{
public :
    static void Exe()
    {
        Program::COUT();
    }
};

class Program
{
public :
    static void Run()
    {
        Child::Exe();
    }
    static void COUT()
    {
        cout << "Child Executed!";
    }
};

错误是:

找不到程序类!!

如果你想把你大概的java代码放在c ++语法中,你可以这样做:

class Child
{
public :
    static void Exe(); //forward declaration
};

class Program
{
public :
    static void Run()
    {
        Child::Exe();
    }
    static void output()
    {
        std::cout << "Child Executed!";
    }
};
void Child::Exe(){
    Program::output();
}

但实际上我认为这是糟糕的设计。如果你想写更多的习惯C++那么你不只是想养成创建类的习惯,而不需要类的其他功能。具体来说,如果类仅用于保持按名称分组的功能,则使用namespace要干净得多:

#include <iostream>
namespace Program{//forward decleration
    void output();
}
namespace Child{
    void Exe(){
        Program::output();
    }
}
namespace Program{
    void Run(){
        Child::Exe();
    }
    void output(){
        std::cout << "Child Executed!";
    }
}
int main(){
    Program::Run();
    return 0;
}