如何使用嵌套类的对象



我有一个头文件中的类:

dmx.h

// dmx.h
#ifndef dmx_h
#define dmx_h
class Dmx {
public:
Dmx() {   
}                                    
// some functions and variables
void channelDisplay() {
}
class touchSlider;     
};

#endif

和另一个头文件中的嵌套类:

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

我在主文件中像这样初始化我的对象:

// 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() {}      

编译时说:'class Dmx' has no member named 'slider'

有人能向我解释一下这是如何正确工作的吗?

问题是在类dmx中,你已经为嵌套类touchSlider提供了一个定义,因为你使用了{},所以你试图在touchSlider.h中重新定义它。

这样,您就可以在头文件中为touchSlider的成员函数提供声明,然后在名为touchSlider.cpp的源文件中定义这些成员函数,如下所示:

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)
{

}

演示工作

相关内容

  • 没有找到相关文章

最新更新