我有三个参数构造函数的恕我直言非常奇怪的问题,当我尝试运行该程序时,visual studio只显示一个错误:“'Sort.HeapSort'不包含一个带有3个参数112 35”的构造函数。 / p>
namespace Sort
{
class HeapSort
{
private int[] A;
private int heapSize;
private int min;
private int max;
Random myRandom = new Random();
HeapSort(int size, int min1, int max1) //this is the three argument constructor.
{
heapSize = size - 1;
min = min1;
max = max1;
A = new int[size];
}
}
class Program
{
static void Main(string[] args)
{
int size = 30;
int min = 0;
int max = 100;
HeapSort myHeapSort = new HeapSort(size,min,max); //In this line is the bug
}
}
}
答案 0 :(得分:9)
您的构造函数被声明为private,因为您省略了访问说明符。在构造函数定义之前添加public
关键字。
答案 1 :(得分:3)
您需要将构造函数指定为public,因此:
public HeapSort(int size, int min1, int max1)
编译器允许您省略辅助功能说明符,默认为private。一点点语法糖,我想要的IMO将被废除。
所以,既然你有一个私有构造函数,你的客户端代码就不会“看到”它,编译器会尝试调用公共构造函数,这自然会导致你看到的错误。
答案 2 :(得分:2)
您的构造函数不是公共的,它是私有的(您没有包含任何修饰符,因此默认为private)因此调用代码无法“看到”它。
变化:
HeapSort(int size, int min1, int max1)
要:
public HeapSort(int size, int min1, int max1)
答案 3 :(得分:1)
您需要将public
添加到构造函数中,否则会将其视为private
,因此无法在Main()
内访问。
答案 4 :(得分:1)
具有三个参数的构造函数上没有可访问性修饰符,因此默认为private
。
将声明更改为public HeapSort(int size, int min1, int max1)
,您将会感觉良好。
答案 5 :(得分:0)
在构造函数之前,您似乎缺少'public'关键字。
答案 6 :(得分:0)
让你的构造函数公开!
答案 7 :(得分:0)
您的构造函数是私有的。它需要公开。