我有一个包含以下功能的流类:
void writeInt(int value); //old function
void writeInt(int value, char* lable); //new function
我们在很多地方使用了writeInt()旧函数。而不改变现有用法 我尝试使用以下命令将旧函数替换为新函数:
#define writeInt(x) writeInt(x,#x)
但它仍然调用旧函数而不是新函数!。
更新:(工作测试用例)
// IStream.h
#include <stdio.h>
class IWStream {
public:
IWStream(char* path);
virtual ~IWStream();
virtual void writeInt( int iValue, char* szlable= 0 );
private:
FILE* _file;
};
//DataObject.h
class DataObject {
public:
DataObject(int value);
virtual ~DataObject(){};
void writeData(IWStream *stream);
private:
int _value;
};
//DataObject.cpp
#include "DataObject.h"
#include "IStream.h"
#define writeInt(x) writeInt(x,#x)
DataObject::DataObject(int value)
{
_value = value;
}
void DataObject::writeData(IWStream *stream)
{
stream->writeInt(_value);
}
//main.cpp
int main(){
IWStream stream("D://test.txt");
DataObject data(10);
data.writeData(&stream);
return 0;
}