这是一个名为A
class A {
int x;
}
和一个类B
,它有一个A类数组成员。
class B {
A a[10];
int y;
}
在A的构造函数中,我需要使用B.我该怎么做?
答案 0 :(得分:1)
此代码可能对您有所帮助。
class A
{
public:
int x;
};
class B : public A
{
public:
A a[10];
int y;
A::x;
};
答案 1 :(得分:1)
当我构造A类时,我必须在B类中使用变量y并使x = y。
请参阅代码中的注释,了解其相关性:
class B; // forward declare B - just saying it's a class
class A
{
public: // class B; above lets constructor take B&
A(const B& b); // declare but don't define constructor
private:
int x;
};
class B
{ ...definition as in Qn... };
// now we know exactly what B is, we can define the constructor
A::A(const B& b) // "when I construct... in class B"
: x(b.y) // "use the variable y and make x = y
{ }
答案 2 :(得分:0)
这里看起来你的问题是你有一个数组。在这种情况下,有简单的解决方案。你应该迭代你的数组,并为数组中的每个元素做你想做的事情:
//Title of this code
//clang 3.4
#include <iostream>
class A {
int x;
public:
A(int x_value = 0)
: x{x_value}
{
}
int x_value() const {return x;}
void set_x_value(int x_value) {x = x_value;}
};
class B {
A a[10];
int y;
public:
B(int y_value)
: y{y_value}
{
for(auto& a_instance : a)
a_instance.set_x_value(y);
}
void print_all_a() const
{
for(auto a_instance : a)
std::cout << a_instance.x_value() << "\n";
}
};
int main()
{
B b{10};
b.print_all_a();
}
答案 3 :(得分:0)
使用前进减速。
class B;
class A {
int x;
A(B &b); //inside constructor you can use B to init A's values
}
class B {
A a[10];
int y;
}