我有一个头文件中的类:
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)
{
}
演示工作