C++ 没有合适的默认构造函数可用-Visual Studio #包括 #包括 使用名称空间std; 类矩形{ int宽度、高度; 公众: 矩形(intx,inty):宽度(x),高度(y){} 内部区域(空白){返回宽度*高度;} }; int main(){ 长方形obj(3,4); 矩形*foo,*bar,*baz; foo=&obj; 条形=新矩形(5,6); baz=新矩形[2]{{2,5},{3,6}; cout

C++ 没有合适的默认构造函数可用-Visual Studio #包括 #包括 使用名称空间std; 类矩形{ int宽度、高度; 公众: 矩形(intx,inty):宽度(x),高度(y){} 内部区域(空白){返回宽度*高度;} }; int main(){ 长方形obj(3,4); 矩形*foo,*bar,*baz; foo=&obj; 条形=新矩形(5,6); baz=新矩形[2]{{2,5},{3,6}; cout,c++,arrays,class,pointers,default-constructor,C++,Arrays,Class,Pointers,Default Constructor,运算符new和运算符new[]之间存在差异,并且将参数传递给新构建元素的构造函数的方式也不同 例如:(略作修改的版本取自维基百科) 您的Visual Studio似乎不兼容C++11。希望有一个选项可以启用C++11 std,或者您可能希望安装最新的编译器 作为旁注,您应该更喜欢STL容器(对于ex:std::array或std::vector,而不是裸指针数组) vectorbaz; 向后推(矩形(2,5)); 向后推(矩形(3,6)); 您没有默认构造函数。如果您发布整个错误并显示它抱怨的行

运算符new和运算符new[]之间存在差异,并且将参数传递给新构建元素的构造函数的方式也不同

例如:(略作修改的版本取自维基百科)

您的Visual Studio似乎不兼容C++11。希望有一个选项可以启用C++11 std,或者您可能希望安装最新的编译器

作为旁注,您应该更喜欢STL容器(对于ex:std::array或std::vector,而不是裸指针数组)

vectorbaz;
向后推(矩形(2,5));
向后推(矩形(3,6));

您没有默认构造函数。如果您发布整个错误并显示它抱怨的行,您可能会得到答案。
baz=new Rectangle[2]{{2,5},{3,6}
可能会给某些编译器带来有关默认构造函数的问题。您有哪个版本的Visual Studio,以及您使用哪个编译器/版本的代码块(代码块不是编译器;它是一个开发环境,可以与不同的编译器一起使用)?当询问涉及编译器错误的问题时,请准确地引用错误。
#include <iostream>
#include <stdlib.h>
using namespace std;

class Rectangle {
  int width, height;
public:
  Rectangle(int x, int y) : width(x), height(y) {}
  int area(void) { return width * height; }
};

int main() {
  Rectangle obj (3, 4);
  Rectangle * foo, * bar, * baz;
  foo = &obj;
  bar = new Rectangle (5, 6);
  baz = new Rectangle[2] { {2,5}, {3,6} };
  cout << "obj's area: " << obj.area() << '\n';
  cout << "*foo's area: " << foo->area() << '\n';
  cout << "*bar's area: " << bar->area() << '\n';
  cout << "baz[0]'s area:" << baz[0].area() << '\n';
  cout << "baz[1]'s area:" << baz[1].area() << '\n';
  delete bar;
  delete[] baz;
  system("PAUSE");
  return 0;
}
T *p = new T(42); //New T inited to T(42). (same syntax as constructors)
T *parray = new T[42];  //An array of 42 T, inited with T()
T *cpp11array = new T[3] {1, 2, 3};  //3 Ts, inited to T(1), T(2) and T(3) (C++11 only)
vector<Rectangle> baz;
baz.push_back( Rectangle(2, 5) );
baz.push_back( Rectangle(3, 6) );