c ++访问课外的东西

时间:2010-11-10 21:06:33

标签: c++ class

好吧,让我说我有这个:

class A:
{
Public:
    int dd;
}

好的,那我有这个课程:

class B:
{
Public:
    void sss(){ ff=dd; }
    int ff;
}

好的,问题是B级不知道dd是什么。我怎样才能让B级知道呢?

6 个答案:

答案 0 :(得分:4)

它是public:而不是Public:

由于dd属于A,因此您需要A的实例才能访问dd

答案 1 :(得分:1)

这两个课程没有任何关系;由于B无法访问任何A对象,因此无法获取其成员的值。

如果您要通过值,引用或指针将A对象传递给B构造函数,则可以访问其dd成员,因为您将其公开。

答案 2 :(得分:0)

您需要拥有A的实例,并将其传递给sss方法才能访问此数据:

void sss(A a) { ff = a.dd; }

如果您只想拥有dd的一个副本,而不是每个A个实例的一个副本,那么您必须使dd静态:

class A
{
public:
    static int dd;
};

class B
{
public:
    void sss() { ff = A::dd; }
    int ff;
};

答案 3 :(得分:0)

也许通过传入A实例?

class B:
{
Public:
    void sss(const A& a){ ff=a.dd; }
    int ff;
}

答案 4 :(得分:0)

您的代码看起来不像C ++,但我会尝试回答您的问题。

有几种可能性可以做你想要的。我只选择一个易于理解的内容。

做这样的事情:

class B
{
public:
    void sss() { ff = a.dd; }
    int ff;

private:
    A a;
};

但是,如果你没有告诉我你真正希望通过该课程达到什么目标,即课程的责任对你有什么帮助,那么这对你没有多大帮助。

答案 5 :(得分:0)

您提供的代码,......

class A:
{
Public:
    int dd;
}

class B:
{
Public:
    void sss(){ ff=dd; }
    int ff;
}

...无效的C ++。

你可以通过尝试编译它来轻松找到它。然后编译器会抱怨很多不相关的东西,但它的第一条消息将与A之后的无关冒号有关。当您删除它并再次编译时,它的第一条消息将与Public相关,而不是更正public(小写)。等等。

语法正确的代码(仍然会产生编译错误,但不会产生基本语法):

class A
{
public:
    int dd;
};

class B
{
public:
    void sss(){ ff=dd; }
    int ff;
};

想象一下,您创建了五个类A的实例,名为a1a2a3a4a5。每个此类实例都有一个成员dd,因此您可以将这五个成员称为a1.dda2.dda3.dda4.dd和{{1} }。

现在您创建一个a5.dd实例,将其命名为'b'。你打电话给B。该成员函数有效地b.sss()。或者它会有意义并被编译器接受。但它不能,b.ff=dda1.dda2.dda3.dda4.dd被引用?

所以,由于这是C ++中一个非常基本的概念,你需要一个好的C++ textbook,比如Bjarne的最新版本,并从头开始。

或者,由于C ++是一种非常复杂的编程语言,因此从一些更简单的语言(如Java)开始,甚至更简单,如JavaScript或Python,可能更好。我推荐Python。它在细节上与C ++有很大不同,但两种语言都是“常规”编程语言。使用Python,您将学习决策结构和功能以及事物,包括类与实例。

干杯&第h。,