class A:
{
Public:
int dd;
}
好的,那我有这个课程:
class B:
{
Public:
void sss(){ ff=dd; }
int ff;
}
好的,问题是B级不知道dd是什么。我怎样才能让B级知道呢?
答案 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
的实例,名为a1
,a2
,a3
,a4
和a5
。每个此类实例都有一个成员dd
,因此您可以将这五个成员称为a1.dd
,a2.dd
,a3.dd
,a4.dd
和{{1} }。
现在您创建一个a5.dd
实例,将其命名为'b'。你打电话给B
。该成员函数有效地b.sss()
。或者它会有意义并被编译器接受。但它不能,b.ff=dd
,a1.dd
,a2.dd
,a3.dd
和a4.dd
被引用?
所以,由于这是C ++中一个非常基本的概念,你需要一个好的C++ textbook,比如Bjarne的最新版本,并从头开始。
或者,由于C ++是一种非常复杂的编程语言,因此从一些更简单的语言(如Java)开始,甚至更简单,如JavaScript或Python,可能更好。我推荐Python。它在细节上与C ++有很大不同,但两种语言都是“常规”编程语言。使用Python,您将学习决策结构和功能以及事物,包括类与实例。
干杯&第h。,