Issue
I have a class in a header file:
dmx.h
// dmx.h
#ifndef dmx_h
#define dmx_h
class Dmx {
public:
Dmx() {
}
// some functions and variables
void channelDisplay() {
}
class touchSlider;
};
#endif
and a nested class in another header file:
touchSlider.h
// touchSlider.h
#ifndef touchSlider_h
#define touchSlider_h
#include "dmx.h"
class Dmx::touchSlider{
private:
// some variables
public:
touchSlider(){
}
// some functions
void printChannel() {
}
};
#endif
And I initialize my objects in my main file like this:
// main.cpp
#include "dmx.h"
#include "touchSlider.h"
Dmx dmx[10] = {Dmx(1), Dmx(2),Dmx(3), Dmx(4), Dmx(5), Dmx(6), Dmx(7), Dmx(8), Dmx(9), Dmx(10)};
Dmx::touchSlider slider[10] = {50,130,210,290,370,50,130,210,290,370};
// functions:
Dmx::touchSlider::printChannel() {}
Dmx::channelDisplay() {}
There is an error message when compiling saying: 'class Dmx' has no member named 'slider'
Could someone explain to me how this works correctly?
Solution
The problem is that inside the class dmx you already provided a definition for the nested class touchSlider since you used {} and so you're trying to redefine it inside touchSlider.h.
To solve this you can provide the declarations for the member functions of touchSlider in the header and then define those member functions inside a source file named touchSlider.cpp as shown below:
dmx.h
// dmx.h
#ifndef dmx_h
#define dmx_h
class Dmx {
public:
Dmx() {
}
Dmx(int){
}
// some functions and variables
void channelDisplay() {
}
class touchSlider{
private:
// some variables
public:
touchSlider(); //declaration
touchSlider(int);//declaration
// some functions
void printChannel();//declaration
};
};
#endif
touchSlider.cpp
#include "dmx.h"
//default ctor implementation
Dmx::touchSlider::touchSlider(){
}
//definition
void Dmx::touchSlider::printChannel() {
}
//definition
Dmx::touchSlider::touchSlider(int)
{
}
Answered By - Anoop Rana Answer Checked By - David Marino (PHPFixing Volunteer)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.