在没有任何关系的情况下从另一个类访问函数 P>我对C++仍然是新的,我想知道是否有可能从另一个类中访问一个函数,知道这里没有父类。这是我节目的一部分,告诉你我到底想做什么 class CSubject { public: CSubject() = default; CSubject(std::string m_Name){this->Name = m_Name;} void print(){ std::cout << Name;} ~CSubject(){} private: std::string Name; }; class CStudent { public: CStudent() = default; void Method2() { //Call the print method and print the name "test" } ~CStudent(){} private: }; int main() { CSubject AE("test"); CStudent ST; ST.Method2(); //Print test; return 0; } class-CSubject { 公众: CSubject()=默认值; CSubject(std::string m_Name){this->Name=m_Name;} void print(){std::cout

在没有任何关系的情况下从另一个类访问函数 P>我对C++仍然是新的,我想知道是否有可能从另一个类中访问一个函数,知道这里没有父类。这是我节目的一部分,告诉你我到底想做什么 class CSubject { public: CSubject() = default; CSubject(std::string m_Name){this->Name = m_Name;} void print(){ std::cout << Name;} ~CSubject(){} private: std::string Name; }; class CStudent { public: CStudent() = default; void Method2() { //Call the print method and print the name "test" } ~CStudent(){} private: }; int main() { CSubject AE("test"); CStudent ST; ST.Method2(); //Print test; return 0; } class-CSubject { 公众: CSubject()=默认值; CSubject(std::string m_Name){this->Name=m_Name;} void print(){std::cout,c++,C++,您可以使用静态方法和属性,可以通过创建实例、覆盖实例以及从无关进程获取它们来更改这些方法和属性 我会像这样编辑您的CSubject类: class CSubject { public: CSubject() = default; CSubject(std::string m_Name) { CSubject::Name = m_Name; } static void print() { if (CSubject::Name.emp

您可以使用静态方法和属性,可以通过创建实例、覆盖实例以及从无关进程获取它们来更改这些方法和属性

我会像这样编辑您的CSubject类:


class CSubject {
public:
    CSubject() = default;
    CSubject(std::string m_Name) {
        CSubject::Name = m_Name;
    }
    static void print() {
        if (CSubject::Name.empty()) //checking is a good practice
            std::cout << "The name is empty...\n";
        else
            std::cout << Name;
    }
    ~CSubject() {}

private:
    static std::string Name;
};
void Method2() {
        CSubject::print();
    }

但是要小心!静态属性是类的唯一属性。如果您计划创建多个CSubject实例及其新名称,则可以将m_Name属性存储为非静态private,将print()存储为非静态public,并且Method2应该在传递CSubject(整个对象或您需要的数据)的位置具有一个参数这符合您的兴趣。

暂时忘掉类。您想调用
Method2()
,然后从那里打印放入
AE
的信息。假设您自己没有两个类,而是说:

void Method2();

int main() {
    const char* AE = "Test";
    // ...
    Method2();
}

这是行不通的,对吧?它也不应该起作用,因为函数中的局部变量(如
main()
)只能在函数体中使用;这是它们的局部作用域。要想
Method2()
以任何方式使用
AE
,必须让
Method2()
知道关于它。类也是一样。

您需要另一个对象的实例来访问它。您需要将
AE
传递给
Method2()
作为参数:
void Method2(CSubject&subc){subc.print();}
.In
main()
它是
ST.Method2(AE);
那么,
无符号sub
是什么?@Paul一个名为
sub
的无符号整数类成员变量?@PaulSanders无所谓我删除了它:
//检查是一种很好的做法
--可能,可能不是。它取决于所实现类型的要求,并且没有关于这些要求的信息。