C++で、クラス内で定義した関数と同名の標準関数を呼び出すことはできますか?
たとえばこのソースをコンパイルすると
#include <stdio.h>
class TestClass {
private:
FILE* aaa;
char testtest[100];
public:
static const int OPEN_BINARY=1;
static const int OPEN_TEXT=2;
int fopen(const char* filename);
int load(int mode);
int save(int mode);
};
int TestClass::fopen(const char* filename) {
//ダミー
return 0;
}
int TestClass::load(int mode) {
if(mode!=OPEN_BINARY && mode!=OPEN_TEXT)return 0;
aaa=fopen("load.txt",mode==OPEN_BINARY?"rb":"r");//エラー
if(aaa==NULL)return 0;
fgets(testtest,sizeof(testtest),aaa);
fclose(aaa);
return 1;
}
int TestClass::save(int mode) {
if(mode!=OPEN_BINARY && mode!=OPEN_TEXT)return 0;
aaa=fopen("save.txt",mode==OPEN_BINARY?"wb":"w");//エラー
if(aaa==NULL)return 0;
fprintf(aaa,"%s",testtest);
fclose(aaa);
return 1;
}
int main(void) {
TestClass test;
test.load(TestClass::OPEN_TEXT);
test.save(TestClass::OPEN_BINARY);
return 0;
}
D:\(中略)\classtest.cpp: In member function `int TestClass::load(int)':
D:\(中略)\classtest.cpp:23: error: no matching function for call to `TestClass::fopen(const char[9], const char*)'
D:\(中略)\classtest.cpp:16: note: candidates are: int TestClass::fopen(const char*)
D:\(中略)\classtest.cpp: In member function `int TestClass::save(int)':
D:\(中略)\classtest.cpp:32: error: no matching function for call to `TestClass::fopen(const char[9], const char*)'
D:\(中略)\classtest.cpp:16: note: candidates are: int TestClass::fopen(const char*)
実際はクラスのfopen関数もそれなりに実装されています。
この場合クラス内のfopenではなく、標準関数のfopenを呼び出したいのですが、そのようなことはできますか?
もしできるなら、その方法を教えていただければ幸いです。
できないのであれば、できないと言っていただければかまいません。
よろしくお願いします。