암만 검색을 해봐도
C언어 같은 경우에는 함수 빠진거 있나 보고 함수 넣어주면 된다는데
C++은 아무래도 클래스 위주로 쓰니깐
LNK1120이랑 2019조합 한방 맛보니까 정신을 못차리겠음
먼저 코드부터 올릴게
#include <iostream>
#include <cstdlib>
#include <string>
#include <crtdbg.h>
using namespace std;
class Vehicle{
bool ignite;
public:
Vehicle();
Vehicle(bool ignite);
~Vehicle();
};
Vehicle::Vehicle(bool ignite)
{
if (ignite = true)
{
cout << "The Vehicle can start ignite." << endl;
}
else
{
cout << "The Vehicle can't start ignite." << endl;
}
}
Vehicle::~Vehicle()
{
cout << "Get rid of Vehicle Class" << endl;
}
class Car{
public:
int increment;
int decrement;
char *color;
int engine;
int gear;
int speed;
Car();
~Car();
Car(int inc, int dec)
{
inc = increment;
speed += increment;
cout << "Car Max Speed : " << speed << "km/h" << endl;
speed = 20;
dec = decrement;
speed -= decrement;
cout << "Car Min Speed : " << speed << "km/h" << endl;
speed = 20;
}
Car(char *c)
{
color = new char[strlen(c) + 1];
strcpy(color, c);
}
};
Car::~Car()
{
cout << "Get rid of Car Class" << endl;
delete[]color;
}
class SportsCar : public Car{
public:
double zerohund;
SportsCar();
SportsCar(bool able);
~SportsCar();
};
SportsCar::SportsCar(bool able)
{
if (able = true)
cout << "The SportsCar have Sports Mode." << endl;
else
cout << "The SportsCar have not Sports Mode." << endl;
}
SportsCar::~SportsCar()
{
cout << "Get rid of SportsCar Class" << endl;
}
int main()
{
Vehicle *First;
SportsCar *Second,s;
First = new Vehicle(true);
Second = new SportsCar(true);
s.engine = 3000;
s.gear = 7;
s.speed = 20;
s.color = "Gold";
s.zerohund = 3.5;
s.increment=300;
s.decrement=20;
cout << "Car Color : " << s.color << endl;
cout << "Car Engine : " << s.engine << " CC" << endl;
cout << "Car Gear : " << s.gear << " Speed" << endl;
cout << "Car Speed(Minimum) : " << s.speed << " km/h" << endl;
cout << "Zero Hundred : " << s.zerohund << " Seconds" << endl;
delete First;
delete Second;
return 0;
}
그담에 이게 오류메시지
1>last.obj : error LNK2019: "public: __thiscall Car::Car(void)" (??0Car@@QAE@XZ) 외부 기호(참조 위치: "public: __thiscall SportsCar::SportsCar(bool)" (??0SportsCar@@QAE@_N@Z) 함수)에서 확인하지 못했습니다.
1>last.obj : error LNK2019: "public: __thiscall SportsCar::SportsCar(void)" (??0SportsCar@@QAE@XZ) 외부 기호(참조 위치: _main 함수)에서 확인하지 못했습니다.
1>C:\Users\Administrator\Documents\Visual Studio 2013\Projects\last\Debug\last.exe : fatal error LNK1120: 2개의 확인할 수 없는 외부 참조입니다.
레알 궁금하다. 클래스끼리 참조하다가 LNK1120 2019맛보게 되니깐 어떤놈이 문제인지 분간을 못하겠음
부모 클래스 Car 에 기본생성자가 없음.
#include <string> => #include <cstring>
생성자들을 너무 아무생각없이 만들었네. 언제 불릴지 어떻게 초기화할지 생각 좀 하지.
Car 기본 생성자 없는 것도 문제네.
ㅅㅅㅅ 너 또 썰렁개그 할려고 나 코고는지 물어보지?
그거 자체가 개그인데요? ㅋㅋㅋ
예전에도 형한테 쳤던 드립인데 별 반응이 없으셔서 재도전한 거예요 ㅋㅋㅋ 코세형 고세영... 라임 쥑이지 않나요? ㅋㅋㅋ
유쾌해서 좋구나 ㅋㅋ
그래서 넌 교수형 ㅋ
아 맞다 내동생이 교수지.
제 동생이 교수군요 하핳핳
성님 교수형~~~~
Car(); ← 이게 기본생성자 아니었음?
기본 생성자에서 아무 일도 안할거면 걍 Car() {} 이렇게 써야됨.
요새영~ 개그가...
; 만 해놓고 정의를 안했으니 에러 뜨는 거.
근데 클래싱 공부하고픈 모양인데 구성 자체가 망했음. 컨스트럭터엔 생성할때 반드시 필요한 인자들만으로 구성하길.
저질 개그는 제 매력 포인트 중 하나입죠 하핳핳
저 이제 정말 자야겠어요. 성님도 아름다운 밤 되세요~
응 잘자~
다 고쳤는데 런타임 뜨네;;;
당연하지 기본 생성자론 color 를 생성하지 못하니까. 니가 웃기게 만든거임.
SportsCar::SportsCar(bool able) : Car("white") 이렇게 생성자 초기화에 부모생성자를 명시하든지. bool able, char* c 로 받아서 Car(c) 로 전달해 주든지.
클래스 설계부터 다시!
ㄳㄳ 이미 다 고침