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。对,你说“代替”,好像他不需要它。既然你把它拿回来了,一切都好了。