/* 感谢任何可能试图回答这个问题的人。我真的不想在这里浪费任何人的时间,但我已经为此苦苦挣扎了大约三天。我意识到对于理解它的人来说这可能非常简单。我已经尝试了我能想到的几乎所有可能的组合,但仍然会出现编译器错误。
C:\random\RNDNUMTEST.cpp(41) : 错误 C2102: '&' 需要左值
我正在尝试将指针作为参数传递给成员函数 fstream.open() 的函数 makeRndmNumber()。我想打开 RNDNUMTEST.cpp 中的文件,然后将其传递给 makeRndmNumber() 以便可以以某种方式对其进行修改。我在网上寻求帮助,包括这个网站,但我觉得我忽略了一些重要或简单的东西,或者我完全错过了这个概念。
这不是作业,我不是大学生。虽然我确实为此上过学,但我已经有 10 多年没有做过任何编程了,而且我从一开始就没有真正理解这一点。任何建议,将不胜感激。
// These are only excerpts from the actual files.
// RndmNum_Class.h file
typedef void(fstream::*fStream_MPT)(const char*); // fStream_MPT (Member Pointer Type)
class RandomNumber {
public:
RandomNumber();
~RandomNumber() {};
static void loadDigits(double, double, char array[]);
static int getLastNDigits(char array[], int);
static int makeRndmNumber(int, int, fStream_MPT);
};
//*************************************************************8
//RndmNum_Class.cpp file
int RandomNumber::makeRndmNumber(int seed, int _fileSize, fStream_MPT FILE) {
......
}
//**************************************************************/
// RNDNUMTEST.cpp file
#include "RndmNum_Class.h"
int main() {
const char* RNDM_FILE = "c:\\RandomFile.txt";
fstream FStream_Obj;
// FStream_Obj.open(RNDM_FILE);
fStream_MPT FileMembPtr = &FStream_Obj.open(RNDM_FILE);
//fStream_MPT FileMembPtr = &fstream::open;
int seed = 297814;
int size = 20000;
cout << RandomNumber::makeRndmNumber(seed, size, FileMembPtr);
return 0;
}