2015-01-17 5 views
0

클래스 Point 및 Vector를 만들었습니다. 나는 이제 그것들을 인스턴스화하려고 시도하고 있지만 g ++는 포인터 이외의 것을 좋아하지 않는다. 나는 실제 변수를 만들 수 없다. 이것은 (ATM, 포인트 및 벡터 공공 X와 Y 변수를 정의하는 public 생성자를 제외하고 비어있는) 실제로 컴파일 입수했습니다 유일한 일 :사용자 정의 클래스의 인스턴스를 만들 수 없습니다.

#include "point.h" 
#include "vector.h" 
#include <iostream> 

int main() 
{ 
    Point* p = new typename Point::Point(3, 3); 
    Vector* v = new typename Vector::Vector(2, -4); 
    Point* p2 = new typename Point::Point(p->X - v->X, p->Y - v->Y); 
    std::cout << "Point p: (" << p->X << "," << p->Y << ")" << std::endl; 
    std::cout << "Vector v: (" << v->X << "," << v->Y << ")" << std::endl; 
    std::cout << "Point p2: (" << p2->X << "," << p2->Y << ")" << std::endl; 

} 

내가 포인터를 만들 필요가 와서 어떻게 변수가 아닌가? 여기

+1

오류로 연결되는 문 표시 – user7

답변

0

는 포인터없이 (live demo를) 그것을 할 방법은 다음과 같습니다

#include "point.h" 
#include "vector.h" 
#include <iostream> 

int main() 
{ 
    Point p(3, 3); 
    Vector v(2, -4); 
    Point p2(p.X - v.X, p.Y - v.Y); 
    std::cout << "Point p: (" << p.X << "," << p.Y << ")\n"; 
    std::cout << "Vector v: (" << v.X << "," << v.Y << ")\n"; 
    std::cout << "Point p2: (" << p2.X << "," << p2.Y << ")\n"; 
} 

을 또한, 당신이 실제로 단순히 인쇄하기 operator<<을 정의하여 (live demo을) 당신의 유형에 대한 사용자 정의 출력 포맷터를 만들 수 있습니다

std::ostream& operator<<(std::ostream& os, Point const& p) 
{ 
    return os << '(' << p.X << ',' << p.Y << ')'; 
} 

std::ostream& operator<<(std::ostream& os, Vector const& v) 
{ 
    return os << '(' << v.X << ',' << v.Y << ')'; 
} 

int main() { 
    Point p(3, 3); 
    Vector v(2, -4); 
    Point p2(p.X - v.X, p.Y - v.Y); 
    std::cout << "Point p: " << p << '\n'; 
    std::cout << "Vector v: " << v << '\n'; 
    std::cout << "Point p2: " << p2 << '\n'; 
} 
관련 문제