我有一个在自己的头文件MyInterface.h中声明的接口:
class MyInterface{
public:
virtual ~MyInterface(){}
virtual void initialize() = 0;
virtual void newValueSound(int stream, double value) = 0;
virtual void newValueAlg1(int stream, double value) = 0;
virtual void newValueAlg2(int stream, double value) = 0;
};
每当我包含这个头文件并尝试使用接口时,例如:
#include "MyInterface.h"
void someMethod(){
MyInterface *interface;
}
我在以下代码行上遇到了奇怪的编译错误:
error C2332: 'struct' : 缺少标签名称
error C2011: '<未命名标记>' : 'enum' 类型重定义
error C2226: 语法错误:意外类型 '<未命名标记>'
我的代码有什么问题?
编辑: 头文件已经有包含保护。 我使用Eclipse CDT与Microsoft编译器。
整个头文件如下:
#ifndef MYINTERFACE_H_
#define MYINTERFACE_H_
class MyInterface{
public:
virtual ~MyInterface(){}
virtual void initialize() = 0;
virtual void newValueSound(int stream, double value) = 0;
virtual void newValueAlg1(int stream, double value) = 0;
virtual void newValueAlg2(int stream, double value) = 0;
};
#endif
以及使用它的类:
#ifndef MAIN_H_
#define MAIN_H_
#include <asio.h>
#include "Stream.h"
#include "MyInterface.h"
class MicApp {
private:
long inputChannelCount;
Stream **streams;
MyInterface *interface;
public:
MicApp(MyInterface *interface);
void initializeASIODrivers();
char **getDriverNames(int *numberOfDrivers);
bool loadDriver(char *driverName);
ASIOError initDriver(ASIODriverInfo *asioDriverInfo);
long getChannelCount();
double getSampleRate();
void activateStream(bool activate, int stream);
ASIOError startASIO();
ASIOError stopASIO();
ASIOError exitDriver();
};
#endif
请注意,“Stream”是另一个类,可以无问题使用。
#include "MyInterface.h
后面加上引号闭合符号了? - Alexander Pavlov