gpt4 book ai didi

c++ - 如何在不实例化它或在 C++ 中子类化的情况下从另一个类访问一个类的方法/变量?

转载 作者:搜寻专家 更新时间:2023-10-31 01:35:36 26 4
gpt4 key购买 nike

我试图将一个类的引用传递给另一个类,这似乎相当复杂,因为我必须编辑涉及该类的所有文件。

我试图将变量设置为静态成员,但它看起来很丑陋。

我可以子类化另一个类。但是除了子类化它还有其他方法吗?

class A
{
func1(){};
};
class B
{
func3()
{
//how can I call func 1 without instantiating class A and subclass A?

};

};

最佳答案

how can I access the methode/variable of one class from another class without instantiating it or subclass in c++?

如果方法/变量是非静态的,则您不能“​​从 [任何地方] 访问 [a] 类的方法/变量而不实例化它”。

非静态成员变量包含在实例中。没有类的实例,就没有成员变量的实例。如果不实例化该类,您就没有实例。所以,你必须实例化一个对象来访问实例的成员变量。

同样,非静态成员函数只能在实例上调用。没有实例,就不能调用成员函数。如果不实例化该类,您就没有实例。因此,您必须实例化一个对象,才能访问非静态成员函数。

请注意,当您实例化一个继承另一个类的类时,您也实例化了一个基类子对象。因此,即使通过子类化也无法避免实例化对象。

静态成员函数和变量可以在没有类实例的情况下使用,就像自由函数和全局变量一样。但是当然,就像自由函数一样,静态成员函数不能通过 this 指针访问实例的非静态成员,因为它们不与任何实例相关联。

关于c++ - 如何在不实例化它或在 C++ 中子类化的情况下从另一个类访问一个类的方法/变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37026885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com