2012-07-24 53 views
0

在VS C#Express中,我得到运行下面的代码时,这个错误(在类中添加一个即使):C#VS错误:类不包含构造

'myComponent.SettingsComponentAttributes' does not contain a constructor that takes 1 arguments.

我曾尝试加入构造函数的类本身,而是应用到新的构造相同的消息:

public override void CreateAttributes() 
{ 
    m_attributes = new SettingsComponentAttributes(this); 
} 

public SettingsComponentAttributes(SettingsComponentAttributes obj) 
{ 
} 
+8

您必须创建一个带有1个参数的构造函数。 – CodeCaster 2012-07-24 09:42:35

回答

7

你的类不声明任何构造函数,因此它等同于具有单参构造函数:

public SettingsComponentAttributes() 
{ 
} 

你试图传递一个参数(this)到构造 - 它不会WOR ķ。你需要改变你的构造函数调用,或者声明一个合适的构造函数。

你应该仔细看看错误消息,并找出你为什么需要在堆栈溢出问。哪条消息不清楚?修改C#知识的这一方面。了解错误信息是成为一个优秀的开发非常重要的一部分,而这一次是相当清楚的:

  • 你试图使用一个构造函数参数1
  • 没有这样的构造存在
+0

非常感谢你,是的,我确实需要回到基本面,只是观看了关于构造函数的这个丰富的[视频](http://www.youtube.com/watch?v=Waq_xVXNJCQ)。开始把握这个想法。 – 2012-07-24 10:19:41

4

默认构造函数参数的,所以如果你想创建它接受你有一个参数自行创建

构造

像这样

public class SettingsComponentAttributes : GH_ComponentAttributes 
{ 
    public override void CreateAttributes() 
    { 
     m_attributes = new SettingsComponentAttributes(this); 
    } 

    public SettingsComponentAttributes(SettingsComponentAttributes obj) 
    { 
     // Do your fancy work here 
    } 
} 
1

你需要创建一个类的构造函数1个arguement,如:

public SettingsComponentAttributes(SettingsComponentAttributes other) 
    { 
     // Initialise. 
    } 
+1

这是一个没有*任何*参数的构造函数,并且由于'Public'和'Class'也不会编译... – 2012-07-24 09:44:30

+1

哎呀,应该彻底读懂这个问题。 – dtsg 2012-07-24 09:47:33

+1

这不是一个彻底阅读*问题*的问题 - 答案中的*文本*已经是正确的,但您的示例代码与文本不匹配。 – 2012-07-24 10:06:16

0

您还没有一个构造函数需要1个参数

public SettingsComponentAttributes(int i)