问题描述
我在传感器库开发中使用嵌套类并遇到错误。下面是示例代码和说明。
MainClass.cpp
class MainClass
{
public:
class nested_class;
void func1(){
nested_class1.print();
}
};
nestedClass.cpp
class MainClass::nested_class
{
public:
virtual void print() = 0;
};
nested1.cpp
class nested_class1: virtual public MainClass::nested_class{
public:
void print();
};
void nested_class1::print(){
cout<<"This is for 1\n";
}
nested2.cpp
class nested_class2 : virtual public MainClass::nested_class{
public:
void print(){
cout<<"This is for 2";
}
};
我正在尝试使用它来扩展我的传感器库中的抽象概念。但是这样做会出现以下错误: print() 未在此范围内声明。
我是这个概念的新手,因此很难在这里找到问题。我哪里出错了?如果需要,我可以提供更多详细信息。
提前致谢!
解决方法
nested_class1.print();
不是您调用 print
实例的 nested_class1
成员的方式,即使它是在此之前声明的。
MainClass::func1
的定义必须在 nested_class1
的定义之后,而 MainClass::nested_class
的定义必须在 #include <iostream>
class MainClass
{
public:
class nested_class;
void func1();
};
class MainClass::nested_class
{
public:
virtual void print() = 0;
};
class nested_class1: virtual public MainClass::nested_class{
public:
void print();
};
class nested_class2 : virtual public MainClass::nested_class{
public:
void print();
};
void MainClass::func1() {
nested_class1 obj;
obj.print();
}
void nested_class1::print(){
std::cout<<"This is for 1\n";
}
void nested_class1::print(){
std::cout<<"This is for 2";
}
int main(){
MainClass instance;
instance.func1();
}
的定义之后。
public class Example extends Thread {
private static int count;
public static void main(String[] args) throws InterruptedException {
Example t1 = new Example();
Example t2 = new Example();
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println(count);
}
public void run() {
for (int i = 0; i < 12000; i++) {
addToCount();
}
}
public synchronized void addToCount() {
Example.count++;
}
}