다음과 같은 수업이 있습니다.
#include <string>
using std::string;
class cOb
{
private:
string var1;
int var2;
int var3;
public:
cOb(string v1, int v2, int v3);
};
cOb::cOb(string v1, int v2, int v3)
{
var1 = v1;
var2 = v2;
var3 = v3;
}
int main()
{
string x = "Somethin";
int y = 0, z = 10;
cOb object1(x,y,z);
}
하지만이 클래스의 객체 배열을 다음과 같이 만들려고하면 :
cOb aObjects[10]("" ,0 ,0 );
컴파일러가 불평하고이 오류를 제공합니다.
error: bad array initializer
모든 객체를 초기화 할 필요가 없도록 기본값을 생성하거나이 배열을 올바른 방법으로 초기화하려면 어떻게해야합니까?
당신은 쓸 수 있습니다:
cOb Objects[10] = { cOb("x", 0, 0), cOb("y", 1, 1), /* etc. */ };
모든 객체를 초기화하는 데 사용되는 단일 기본값을 지정할 수 없습니다. 그렇게하려면 기본 생성자를 cOb
. 이를 수행하는 가장 간단한 방법은 기존 생성자의 인수에 기본값을 제공하는 것입니다.
cOb (string v1 = "", int v2 = 0, int v3 = 0 );
그러나 std::vector
C 스타일 배열 대신 컨테이너로 사용하는 경우 기본값을 전달할 수 있습니다.
std::vector<cOb> Objects( 10, cOb("x", 0, 0) );
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다