如何使用在头文件的后半部分声明的类,该类来自顶部的另一个类
How to use a class declared in in latter part of the header file from another class in top
这是一个名为A
的类
class A {
int x;
}
和类B
,它有A类数组成员。
class B {
A a[10];
int y;
}
在 A 的构造函数中,我需要使用 B。我该怎么做?
这段代码可能会对你有所帮助。
class A
{
public:
int x;
};
class B : public A
{
public:
A a[10];
int y;
A::x;
};
当我构造类 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
{ }
看起来你的问题是你有一个数组。在这种情况下,有简单的解决方案。您应该迭代数组,并为数组中的每个元素执行所需的操作:
//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();
}
这是实时示例:http://rextester.com/VVEW75722
使用正向减速。
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;
}
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运行同一解决方案的另一个项目的项目
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++从另一个类访问公共静态向量的正确方法是什么
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 使用std::transform将一个范围的元素添加到另一个范围中
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 修改函数中的指针(将另一个指针作为参数传递)
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- C++试图读取一个文件并输出到另一个文本文件
- 如何将指针从一个void函数传递到另一个C++
- 如何从另一个文件继承私有成员变量和公共函数
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- C++ - 无法将顶部常量指针分配给另一个非常量指针
- 如何使用在头文件的后半部分声明的类,该类来自顶部的另一个类
- 另一个窗口顶部的窗口
- QT5:使用drawPixMap()在另一个矩形的顶部绘制矩形
- 在直接绘制全屏应用程序的顶部显示另一个应用程序