2

有很多关于使用未声明标识符的主题,但没有一个对我有帮助。它们中的大多数是用于 ios 开发的,我可能很难理解。

这是我的标题(简化为问题):

#pragma once

#include "ofMain.h"

class ImageRayTracer {

    public:
        // empty constructor
        ImageRayTracer(void);
        void setHitColor(ofColor c);

    private:
        ofColor hitColor;
};

这是我的实现剥离到问题:

#include "imageRayTracer.h"


ImageRayTracer::ImageRayTracer(void) {
    hitColor.set(0);
}


// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

void setHitColor(ofColor c) {
    //Use of undeclared identifier
    hitColor = c;
}

我在构造函数中没有问题,但我在 setHitColor 方法中有问题。为什么是这样?以及如何解决?

4

2 回答 2

2

您必须说这setHitColor()是 的方法ImageRayTracer,就像您对构造函数所做的那样。

void ImageRayTracer::setHitColor(ofColor c) {
    //Use of undeclared identifier
    hitColor = c;
}
于 2013-10-14T22:25:30.960 回答
2
void setHitColor(ofColor c) {
    //Use of undeclared identifier
    hitColor = c;
}

试图在全局范围内定义一个函数。此函数尝试将参数分配c给 unknown (undeclared) hitColor。要定义一个成员函数,您必须在它前面加上类的名称,以便编译器能够将它与您的类的定义相关联:

void ImageRayTracer::setHitColor(ofColor c) {
    //Use of undeclared identifier
    hitColor = c;
}
于 2013-10-14T22:26:16.650 回答