2015-12-15 2 views
0

Я полностью потерял на этомошибки: неразрешенный внешний символ «общественность:. Двойной __thiscall

При компиляции, я получаю эту ошибку:

Ошибки 7 Ошибки LNK1120: 6 неразрешенных внешние

ошибка 4 ошибки LNK2001: неразрешенный внешний символ "общественность: двойной __thiscall Cmyk :: getB2 (аннулируется)" (getB2 @ Cmyk @@ QAENXZ?)

ошибка 5 ошибки LNK2001: неразрешенный внешний символ «общественность: двойной __thisc все Cmyk :: getG (void) "(? getG @ Cmyk @@ QAENXZ)

Ошибка 6 ошибка LNK2001: неразрешенный внешний символ" public: double __thiscall Cmyk :: getR (void) "(? getR @ Cmyk @@ QAENXZ)

ошибка 1 ошибка LNK2001: неразрешенный внешний символ "общественности: двойной __thiscall Hex :: getB2 (аннулируются)" (getB2 @ Hex @@ QAENXZ)

ошибка 2 ошибка LNK2001: неразрешенный внешний символ «общественного : double __thiscall Hex :: getG (void) "(? getG @ Hex @@ QAENXZ)

Ошибка 3 ошибка LNK2001: неразрешенный внешний символ" public: double __thiscall Hex :: getR (void) "(? getR @ Hex @@ QAENXZ)

Вот код

#ifndef header_h_ 
#define header_h_ 


class Spalva 
{ 
    public: 
    double r, g, b2, c2; 

    public: 
    Spalva(){} 
    Spalva(double a, double b, double c, double c2) 
    { 

    } 
    }; 


    class Spalva2 :public Spalva { 



    public: 
    Spalva2(); 
    Spalva2(int a, int b, int c); 

    double getR(); 
    double getG(); 
    double getB2(); 



    Spalva2 operator+(Spalva2 a); 
    void print(); 

    }; 

    class Hex :public Spalva { 


    public: 
    Hex(); 
    Hex(int a, int b, int c); 


    void hex1(); 
    void hex2(); 
    void hex3(); 

    double getR(); 
    double getG(); 
    double getB2(); 


}; 

class Cmyk :public Spalva { 


public: 
    Cmyk(); 
    Cmyk(double a, double b, double c, double d); 

    double getR(); 
    double getG(); 
    double getB2(); 


    void cmyk(); 

}; 





#endif // header_h_ 

И .cpp файл

#include <iostream> 
    #include <iomanip> 
    #include <stdio.h> 
    #include <stdlib.h> 
    #pragma warning(disable : 4996) 
    #pragma warning(disable : 4244) 
    #include "header.h" 

    using namespace std; 


    Spalva2::Spalva2() {}; 
    Spalva2 :: Spalva2(int a, int b, int c) { 
    r = a; 
    g = b; 
    b2 = c; 

} 



Spalva2 Spalva2 :: operator+(Spalva2 a) { 
    Spalva2 rez; 

    if (r == 255 && g == 255 && b2 == 255 && 
     a.getR() == 255 && a.getG() == 255 && a.getB2() == 255) 
    { 
     rez.r = 255; 
     rez.g = 255; 
     rez.b2 = 255; 
     cout << "Nauja RGB spalva:" << endl; 
     return rez; 
    } 

    if (r == 1 && g == 1 && b2 == 1 && 
     a.getR() == 1 && a.getG() == 1 && a.getB2() == 1) 
    { 
     rez.r = 1; 
     rez.g = 1; 
     rez.b2 = 1; 
     cout << "Nauja RGB spalva:" << endl; 
     return rez; 
    } 


    rez.r = this->r/2 + a.getR()/2; 
    rez.g = this->g/2 + a.getG()/2; 
    rez.b2 = this->b2/2 + a.getB2()/2; 

    cout << "Nauja RGB spalva:" << endl; 
    return rez; 
} 
void Spalva2 :: print() { 

    cout << getR() << " " << getG() << " " << getB2() << endl; 

} 



Hex :: Hex() {}; 
Hex :: Hex(int a, int b, int c) { 
    r = a; 
    g = b; 
    b2 = c; 
} 


void Hex :: hex1() 
{ 

    char buffer[33]; 
    cout << "HEX: #" << setw(2) << setfill('0') << itoa(getR(), buffer, 16); 
} 
void Hex :: hex2() 
{ 
    char buffer[33]; 
    cout << setw(2) << setfill('0') << itoa(getG(), buffer, 16); 
} 

void Hex :: hex3() 
{ 
    char buffer[33]; 
    cout << setw(2) << setfill('0') << itoa(getB2(), buffer, 16) << endl; 
} 






Cmyk::Cmyk() {} 
Cmyk::Cmyk(double a, double b, double c, double d) { 
    r = a; 
    g = b; 
    b2 = c; 
    c2 = d; 
} 

double Spalva2 :: getR() { 
    return this->r; 
} 
double Spalva2 :: getG() { 
    return this->g; 
} 
double Spalva2 :: getB2() { 
    return this->b2; 
} 

void Cmyk :: cmyk() 
{ 
    double max, temp1, temp2, temp3; 


    Cmyk rez; 

    temp1 = getR()/255; 
    temp2 = getG()/255; 
    temp3 = getB2()/255; 

    max = temp1; 

    if (temp2 > max) 
     max = temp2; 
    if (temp3 > max) 
     max = temp3; 


    rez.c2 = 1 - max; 
    rez.r = (1 - temp1 - rez.c2)/(1 - rez.c2); 
    rez.g = (1 - temp2 - rez.c2)/(1 - rez.c2); 
    rez.b2 = (1 - temp3 - rez.c2)/(1 - rez.c2); 



    cout << fixed << setprecision(3) << "C: " << rez.r << " M: " << rez.g << " Y: " << rez.b2 << " K: " << rez.c2 << endl; 



} 

Любая помощь приветствуется :)

ответ

2

Вы забыли реализовать некоторые методы. Например, у вас нет реализации для методов: double getR() ;, double getG() ;, double getB2(); в файле CPP. То же самое для класса Cmyk.

+0

Прошу прощения за этот вопрос, но как это сделать? – user3083761

+0

@ user3083761 - Вы * определили функции для 'Spalva2', но не для' Hex' и 'Cmyk'. –

+0

спасибо за объяснение, я думаю, я получил его сейчас! – user3083761

Смежные вопросы