Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误LNK2001:未解析的外部符号;公众:双重电话_C++_Class_Oop_Methods - Fatal编程技术网

C++ 错误LNK2001:未解析的外部符号;公众:双重电话

C++ 错误LNK2001:未解析的外部符号;公众:双重电话,c++,class,oop,methods,C++,Class,Oop,Methods,我完全不明白这一点 编译时,出现以下错误: 错误7错误LNK1120:6个未解析的外部 错误4错误LNK2001:未解析的外部符号“public:double u thiscall Cmyk::getB2(void)”(?getB2@Cmyk@@QAENXZ) 错误5错误LNK2001:未解析的外部符号“public:double u thiscall Cmyk::getG(void)”(?getG@Cmyk@@QAENXZ) 错误6错误LNK2001:未解析的外部符号“public:doubl

我完全不明白这一点

编译时,出现以下错误:

错误7错误LNK1120:6个未解析的外部

错误4错误LNK2001:未解析的外部符号“public:double u thiscall Cmyk::getB2(void)”(?getB2@Cmyk@@QAENXZ)

错误5错误LNK2001:未解析的外部符号“public:double u thiscall Cmyk::getG(void)”(?getG@Cmyk@@QAENXZ)

错误6错误LNK2001:未解析的外部符号“public:double\u thiscall Cmyk::getR(void)”(?getR@Cmyk@@QAENXZ)

错误1错误LNK2001:未解析的外部符号“public:double u thiscall Hex::getB2(void)”(?getB2@Hex@@QAENXZ)

错误2错误LNK2001:未解析的外部符号“public:double\uu thiscall Hex::getG(void)”(?getG@Hex@@QAENXZ)

错误3错误LNK2001:未解析的外部符号“public:double\uu 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;



}
#包括
#包括
#包括
#包括
#杂注警告(禁用:4996)
#杂注警告(禁用:4244)
#包括“header.h”
使用名称空间std;
Spalva2::Spalva2(){};
Spalva2::Spalva2(int a、int b、int c){
r=a;
g=b;
b2=c;
}
Spalva2 Spalva2::运算符+(Spalva2 a){
Spalva2-rez;
如果(r==255&&g==255&&b2==255&&
a、 getR()==255&&a.getG()==255&&a.getB2()==255)
{
rez.r=255;
rez.g=255;
rez.b2=255;

您可能忘记了实现一些方法。例如,您没有方法的实现:double-getR();,double-getG();,double-getB2();在CPP文件中。对于Cmyk类也是如此。

很抱歉我提出了这个noob问题,但我该怎么做?@user3083761-您确实为
Spalva2
定义了函数,但没有为
Hex
Cmyk
定义函数。谢谢您的解释,我想我现在已经可以使用了:)