未找到标识符convertToHSL

时间:2013-04-04 10:33:23

标签: c++ visual-c++

我在main方法中调用convertToHSL(c1)时收到错误标识符。我不明白我的代码是什么问题。请帮忙。我的代码如下:

#include "stdafx.h"
#include "q3.h"
#include <cmath>
#include <iostream>
#include <math.h>

using namespace std; 

int main(int argc, char* argv[])
{
    Color c1(1,1,1);
    HSL h=convertToHSL(c1);

    getchar();
    getchar();
    return 0;
}

Color::Color(){}
Color::Color(float r,float g,float b){
    this->r=r;
    this->g=g;
    this->b=b;
}

Color::~Color(void){}

Color Color::operator+(Color c) {
    return Color(r*c.r,g*c.g,b*c.b);
}

Color Color::operator*(float s) {
    return Color(s*r,s*g,s*b);
}

HSL::HSL() {}
HSL::HSL(float h,float s,float l) {
    this->h=h;
    this->s=s;
    this->l=l;
}

HSL::~HSL(void){}





HSL convertToHSL(Color const& c) {
    return HSL(0,0,0);

2 个答案:

答案 0 :(得分:0)

如果未声明convertToHSL,则在main()上未知:在所有其他函数下面的文件末尾替换main()。

答案 1 :(得分:0)

在您调用convertToHSL(在main中)时,您的编译器根本不知道它存在,因为它还没有“看到”(尚未宣布。)

因此,为了能够从main调用此函数,可以将convertHSL的定义移到main之上,或者至少在main之上预先声明它(不定义它)。或者,如果要从其他文件中使用它,也可以将其声明放入头文件中(并且可以将其定义为单独的源文件或直接在头文件中使用inline说明符)。

但如果所有这些都没有告诉你多少,你应该深入研究C ++的基础知识。