在没有任何关系的情况下从另一个类访问函数 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
您可以使用静态方法和属性,可以通过创建实例、覆盖实例以及从无关进程获取它们来更改这些方法和属性 我会像这样编辑您的CSubject类:在没有任何关系的情况下从另一个类访问函数 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
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();}
.Inmain()
它是ST.Method2(AE);
那么,无符号sub
是什么?@Paul一个名为sub
的无符号整数类成员变量?@PaulSanders无所谓我删除了它://检查是一种很好的做法
--可能,可能不是。它取决于所实现类型的要求,并且没有关于这些要求的信息。