如何在 C++ 中的类中声明和使用另一个类的对象
how to declare and use another class's object within a class in c++
我是编程初学者。我编码了两个类(具有需要传递参数的构造函数),并希望在另一个类中声明和使用一个类的对象。
我曾试图在许多网站上找到解决我错误的方法,但都没有成功。我还看到了使用"new"语法解决此问题的方法。请提出一些(任何)解决这个问题的方法。
一个类似于我面临问题的短程序如下:(我知道这个程序很愚蠢,但这不是我面临问题的实际程序。相反,这是我面临错误的程序部分的缩小版本)
错误在Class2.h和main.cpp中
main.cpp
#include <iostream>
#include "Class2.h"
using namespace std;
int main()
{
Class2 Class2_Obj;
Class2_Obj.Class2_Function(); // error: undefined reference to `Class2::Class2_Function
return 0;
}
Class1.h
#ifndef CLASS1_H_INCLUDED
#define CLASS1_H_INCLUDED
class Class1
{
private:
const int c1_Variable;
public:
Class1(int);
// Displays the value of c1_Variable on output screan
void Class1_Function();
};
#endif // CLASS1_H_INCLUDED
Class1.cpp
#include <iostream>
#include "Class1.h"
Class1::Class1(int receivedInt) : c1_Variable(receivedInt) {}
void Class1::Class1_Function()
{
cout << c1_Variable;
}
Class2.h
#ifndef CLASS2_H_INCLUDED
#define CLASS2_H_INCLUDED
#include"Class1.h"
class Class2
{
private:
Class1 Class1_Obj(4); // 4 is just a random number.
//error: expected identifier before numeric constant
//error: expected ',' or '...' before numeric constant
public:
// Calls Class1_Function()
void Class2_Function();
};
#endif // CLASS2_H_INCLUDED
Class2.cpp
#include <iostream>
#include "Class1.h"
#include "Class2.h"
void Class::Class2_Function()
{
Class1_Obj.Class1_Function();
}
以下是错误快照的链接:
Class2.h-错误截图https://i.stack.imgur.com/WpK9k.jpg
main.cpp中错误的屏幕截图-https://i.stack.imgur.com/yDBD7.jpg
请帮帮我!提前感谢您的回复:)
问题是非静态数据成员语法的就地初始化无效:
class Class2
{
private:
Class1 Class1_Obj(4);
....
};
您可以使用{}
,
class Class2
{
private:
Class1 Class1_Obj{4};
....
};
或者这种形式的
class Class2
{
private:
Class1 Class1_Obj = Class1(4);
....
};
要将一个类放入另一个类,请将an object of one class
设为a member of another class
。
从语法上讲,它的工作方式与类似
class A {
int x;
public:
A (int x1) : x(x1) {}
};
class B {
A a; // this is how you do it ..
public:
B() : A(4) {}
};
B b; // b is an object which has a member b.a
正如您所看到的,b
是B
类的对象。它有一个A
类的成员a
。
相关文章:
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 为什么C++在将一个对象复制到另一个对象时需要对这两个对象进行低级常量限定
- 检查哪个对象调用了另一个对象的对象方法
- C++ 如何在将新对象分配给另一个对象时创建新对象
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- 如何使用函数将一个对象的输入复制到另一个对象中
- 为什么我可以使用 memcpy 将一个对象变量复制到另一个对象变量
- 如何将包含另一个对象向量的对象保存到文件中,并使用C++中的二进制文件从文件中读回?
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 打印对象的映射,其中另一个对象作为键
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- 为什么将两个对象分配给另一个对象后,两个对象不一样?
- 复制赋值函数如何访问另一个对象的私有成员(Stroustroup 原则和实践书)?
- 为什么数组中对象的析构函数在被另一个对象替换时不被调用?
- C++将带有重载构造函数的对象添加到另一个对象
- 如何将指针从unique_ptr传递到另一个对象并管理寿命
- 如何将"this"的生命周期移动到C++中的另一个对象中?
- 2 个 COM 对象,并在另一个对象中使用其中一个对象的接口
- 将列表的对象C++移动到另一个对象