Использование необъявленного идентификатора с openframeworks

Есть много тем об использовании необъявленного идентификатора, но ни одна из них мне не помогает. Большинство из них предназначены для разработки 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. Почему это? И как решить?


person clankill3r    schedule 14.10.2013    source источник
comment
Что за сообщение об ошибке?   -  person Cole Johnson    schedule 15.10.2013


Ответы (2)


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

пытается определить функцию в глобальной области видимости. Эта функция пытается присвоить аргумент c неизвестному (необъявленному) hitColor. Чтобы определить функцию-член, вы должны добавить к ней префикс имени класса, чтобы компилятор смог связать ее с определением вашего класса:

void ImageRayTracer::setHitColor(ofColor c) {
    //Use of undeclared identifier
    hitColor = c;
}
person LihO    schedule 14.10.2013

Вы должны сказать, что setHitColor() является методом ImageRayTracer, как вы сделали с конструктором.

void ImageRayTracer::setHitColor(ofColor c) {
    //Use of undeclared identifier
    hitColor = c;
}
person jxh    schedule 14.10.2013
comment
Благодарю. Я родом из Java, поэтому я не замечаю такие вещи. - person clankill3r; 15.10.2013