在C++中传递一个结构作为构造函数参数

Passing a struct as a constructor parameter in C++

本文关键字:结构 一个 参数 构造函数 C++      更新时间:2023-10-16

我已经尽了最大努力,但在这个特定的主题上找不到太多。我必须获取大量的变量,可能是多个对象的变量,并将它们传递给一组函数,所以我认为这是最好的方法

我想将一个结构传递给一个未定义结构的类的构造函数。这可能吗?我的代码看起来像这样:

class myClass
{
protected:
   double someVar;
   .
   .
public:
   myClass(struct structName);  //compiler is ok with this
   myClass();                   //default construct
};
struct structName
{
   double someOtherVar;
   .
   .
};
myClass::myClass(??????)  ///I don't know what goes here
{ 
  someVar = structName.someOtherVar; ///this is what I want to do
} 

编辑:我应该在类中声明一个结构并将该结构用作参数吗?

事实上,您已经编写了所有内容。我只会使用const struct structName & 而不是struct structName

myClass::myClass( const structName &s )
{ 
  someVar = s.someOtherVar; 
} 

或者您可以将构造函数定义为

myClass::myClass( const structName &s ) : someVar( s.someOtherVar )
{ 
} 

在本声明中,

   myClass(struct structName);  

struct structName就是所谓的阐述型名称。它在定义类的命名空间中引入了一种新类型。

在您的例子中,您首先声明了结构,然后定义了它。构造函数声明不要求结构是一个完整的类型。