C++ 在C+;中将结构作为构造函数参数传递+;

C++ 在C+;中将结构作为构造函数参数传递+;,c++,class,struct,parameters,constructor,C++,Class,Struct,Parameters,Constructor,在这个特定的话题上,我已经尽了最大的努力,但找不到太多。我必须获取大量变量,可能是多个对象的变量,并通过一组函数传递它们,所以我认为这是最好的方法 我想为未定义结构的类将结构传递给构造函数。这可能吗?我的代码如下所示: class myClass { protected: double someVar; . . public: myClass(struct structName); //compiler is ok with this myClass();

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

我想为未定义结构的类将结构传递给构造函数。这可能吗?我的代码如下所示:

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&

myClass::myClass( const structName &s )
{ 
  someVar = s.someOtherVar; 
} 
或者您可以将构造函数定义为

myClass::myClass( const structName &s ) : someVar( s.someOtherVar )
{ 
} 
在本声明中

   myClass(struct structName);  
structStructName
是所谓的详细类型名。它在定义类的命名空间中引入了一个新类型


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

忘记结构。它们和其他类型一样,只是为了您的目的。在可以为
int
编写
int x
的地方,可以为
structName
编写
structName x
。就是这样。@Ben Voigt他在声明中指定了关键字struct。对,你说“代替”,好像他不需要它。既然你把它拿回来了,一切都好了。