VC++中不同函数的对象访问

Posted

技术标签:

【中文标题】VC++中不同函数的对象访问【英文标题】:OBject access from different functions in VC++ 【发布时间】:2010-04-22 11:47:08 【问题描述】:

我的 B 类中有 3 个函数。这三个函数必须访问其他 A 类的成员函数。

我通过在 B 类构造函数中创建 A 类对象并尝试在 B 类的函数中访问该对象来做到这一点。但它显示错误。

如何在这三个函数中评估同一个对象。我必须在哪里创建 A 类的对象

B::B()
 
  A a;
 
B:: function()

 a.fun(); //fun belongs to class A

B:: function1()

 a.fun1(); //fun1 belongs to class A

我遇到了错误,如何在两个函数中访问对象 a 的地方实现相同的功能。

【问题讨论】:

【参考方案1】:

您应该将 A 添加为 B 类的成员,而不是作为 B 构造函数的局部变量。 试试这个:

class B

public:
  B();
  void function1();

private:
  // This is your member, and you can access it from all of B's methods.
  A m_a;
;

【讨论】:

【参考方案2】:

您需要像这样将a 设为B 类的成员变量:

class B

private:
    A a;

// ...

这将使它可用于B 的所有成员函数。

(没有必要设置为private - 设置为privateprotectedpublic 的决定取决于您是否希望仅在BBB 的派生类,或无处不在。)

【讨论】:

以上是关于VC++中不同函数的对象访问的主要内容,如果未能解决你的问题,请参考以下文章

vc9 和 gcc 之间的不同析构函数行为

VC 中CString 的成员函数 Format的问题

在VC中,多线程如何调用类得成员函数?

构造函数的调用时机

是否可以创建同一对象的不同实例并通过将参数传递给 Koin 中的 get() 函数来访问它们?

访问继承的函数