2013-04-04 89 views
0

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

#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); 
+1

是否在头文件中声明了convertToHSL? – ForEveR 2013-04-04 10:34:39

回答

0

如果convertToHSL没有宣布它是未知的main():在文件末尾的所有其他职能下更换主()。

0

,在您致电convertToHSL(在main)编译器根本不知道它的存在,因为它没有点“看到”它尚未(它尚未声明还)。

所以为了能够从main调用这个函数,要么移动convertHSL的定义高于main,要么至少在main之上声明它(没有定义它)。或者,如果要从其他文件中使用它,请将其声明放入一个头文件中(并且其定义可能是单独的源文件或直接在头文件中指定一个inline说明符)。但如果所有这些都不能告诉你很多,你应该深入研究一下C++的基础知识。