在函数中使用类对象

Using class objects in functions

本文关键字:对象 函数      更新时间:2023-10-16

我是C++新手,我正在尝试制作一个程序来在两个对象之间进行转换。我有Class1Class2Convert。我想要一个函数,它接受一个 Class1 对象,将其转换为 Class2 对象并返回 Class2 对象。现在我的转换类基本上是:

转换.h

#ifndef Convert_H
#define Convert_H
#include "Class1.h"
#include "Class2.h"
class Convert
{
public:
    Convert();
    Class1 c1;
    Class2 c2;
    Class2 C1ToC2(Class1);
};
#endif // Convert_H

转换.cpp

#include "Convert.h""
#include "Class1.h" 
#include "Class2.h"
Convert::Convert()
Class2 Convert::C1ToC2(Class1 c1)
{
    //conversions
    return c2;
}

我对此有几个问题。我不想在其他类中使用转换函数,这就是我创建一个单独的类的原因。

  1. 这是使用我不想与其他类分开的函数的好方法吗
  2. 当我编译这个类时,它失败了,说"Class2 之前的预期初始值设定项,但由于我想返回一个 Class2 对象,这不是我必须定义函数的方式吗?

再一次,我是C++新手,我确实有几本书,我正在努力学习,但它们并没有真正告诉如何使用这样的对象,所以如果这是一个愚蠢的问题,我深表歉意,我完全错了。

在C++中,你可以简单地直接使用一个函数,你不需要类Convert

Convert.h

#ifndef Convert_H
#define Convert_H
#include "Class1.h"
#include "Class2.h"
// declare the function
Class2 convert( const Class1& input );
#endif

Convert.cpp

#include "Convert.h"
// define the function
Class2 convert( const Class1& input )
{
    Class2 result;
    // do conversion
    return result;
}

请注意,这只是基础知识,可以在多个方面进行改进,但它应该可以帮助您开始并自行进行实验。

关于你的第二个问题,代码无法编译的原因是因为你忘记了Convert::Convert()后的大括号。(或者可能是分号。但我假设你想定义 ctor(