C ++预处理器指令问题

时间:2014-04-08 10:31:45

标签: c++ preprocessor-directive

我有一个包含以下功能的流类:

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;
}

0 个答案:

没有答案