2015-12-15 60 views
0

我完全失去了在这一个错误LNK2001:无法解析的外部符号“公用:双__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六角:: getB2(无效)”(getB2 @十六进制@@ QAENXZ)

错误2错误LNK2001:无法解析的外部符号“公:double __thiscall Hex :: getG(void)(?getG @ Hex @@ QAENXZ)

错误3错误LNK2001:无法解析的外部符号@@ 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

对不起,这个noob问题,但我该怎么做? – user3083761

+0

@ user3083761 - You * did *定义了'Spalva2'的函数,但不适用于'Hex'和'Cmyk'。 –

+0

感谢您的解释,我想我现在工作:) – user3083761

相关问题