如何在 C++ 中的类中声明和使用另一个类的对象

how to declare and use another class's object within a class in c++

本文关键字:另一个 对象 声明 C++      更新时间:2023-10-16

我是编程初学者。我编码了两个类(具有需要传递参数的构造函数),并希望在另一个类中声明和使用一个类的对象。

我曾试图在许多网站上找到解决我错误的方法,但都没有成功。我还看到了使用"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);
  ....
};
C++是一种面向对象的语言。它有类来构造数据。

要将一个类放入另一个类,请将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

正如您所看到的,bB类的对象。它有一个A类的成员a

相关文章: