c++ - 错误 LNK2001 : unresolved external symbol "public: double __thiscall

标签 c++ class oop methods

我完全迷失了这一点。

编译的时候报错:

Error 7 error LNK1120: 6 unresolved externals

Error 4 error LNK2001: unresolved external symbol "public: double __thiscall Cmyk::getB2(void)" (?getB2@Cmyk@@QAENXZ)

Error 5 error LNK2001: unresolved external symbol "public: double __thiscall Cmyk::getG(void)" (?getG@Cmyk@@QAENXZ)

Error 6 error LNK2001: unresolved external symbol "public: double __thiscall Cmyk::getR(void)" (?getR@Cmyk@@QAENXZ)

Error 1 error LNK2001: unresolved external symbol "public: double __thiscall Hex::getB2(void)" (?getB2@Hex@@QAENXZ)

Error 2 error LNK2001: unresolved external symbol "public: double __thiscall Hex::getG(void)" (?getG@Hex@@QAENXZ)

Error 3 error LNK2001: unresolved external symbol "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;



}

感谢任何帮助:)

最佳答案

您忘记实现某些方法。例如,您没有方法的实现:double getR();、double getG();、double getB2();在 CPP 文件中。 Cmyk 类也是如此。

关于c++ - 错误 LNK2001 : unresolved external symbol "public: double __thiscall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34288699/

相关文章:

javascript - 如何在自动可执行方法中获取文字对象中的属性值

php - 使用 __get() (魔术)模拟只读属性和延迟加载

c++ - opencv imencode() 缓冲区异常

Java构造函数问题

c++ GetCurrentThemeName 为经典 Windows 主题返回空值

c++ - 为什么 C 样式转换允许您转换为私有(private)基类?

python - 访问 python 中的嵌套类(循环引用?)

java - Java 类中的多对多关系,无需使用任何 ORM

没有虚拟析构函数的多态性中的c++ shared_ptr

c++ - DirectX 数学函数混淆