C++ C++;将向量传递给重载类-有些call语句有效,有些则无效。
我花了大量时间在谷歌上,试图弄清楚在main调用和includes块函数之间使用.h和.cpp文件时如何传递向量。我成功地使用了类定义 现在一切都很顺利,直到我想创建一个重载函数。(我可以用两个不同的类来实现这一点,但我必须在程序中使用一个重载函数。) 这是我的writeData.h文件:C++ C++;将向量传递给重载类-有些call语句有效,有些则无效。,c++,function,class,vector,C++,Function,Class,Vector,我花了大量时间在谷歌上,试图弄清楚在main调用和includes块函数之间使用.h和.cpp文件时如何传递向量。我成功地使用了类定义 现在一切都很顺利,直到我想创建一个重载函数。(我可以用两个不同的类来实现这一点,但我必须在程序中使用一个重载函数。) 这是我的writeData.h文件: #ifndef WRITEDATA_H #define WRITEDATA_H #include <vector> #include <string> #include <io
#ifndef WRITEDATA_H
#define WRITEDATA_H
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
class writeData
{
public: writeData();
public: writeData(vector<int> & DATAFILE);
public: writeData(vector<int> & DATAFILE, string);
};
#endif
\ifndef WRITEDATA\u H
#定义写入数据
#包括
#包括
#包括
#包括
使用名称空间std;
类写数据
{
public:writeData();
公共:writeData(矢量和数据文件);
public:writeData(向量和数据文件,字符串);
};
#恩迪夫
使用名称空间std的位置;这是另一个话题
这是我的writeData.cpp文件:
#include "writeData.h"
writeData::writeData()
{
std::cout << "Default writeData" << std::endl;
}
writeData::writeData(vector<int> & DATAFILE)
{
cout << "writeData 1" << endl;
for (int var : DATAFILE)
{
cout << var <<endl;
}
}
writeData::writeData(vector<int> & DATAFILE, string fileName)
{
ofstream myfile(fileName);
cout << "writeData" << endl;
if (myfile.is_open())
{
for (int var : DATAFILE)
{
cout << var << endl;
myfile << var << endl;
}
myfile.close();
}
}
#包括“writeData.h”
writeData::writeData()
{
当前的问题是这个声明
writeData(items);
与
writeData items;
因此出现了重新定义错误。更深层次的问题是,您为一个类定义了三个构造函数,并且似乎试图在不创建命名实例的情况下调用它们。要成功调用传递项的单参数构造函数,您需要
writeData data_writer(items);
或者,您可能需要成员函数,也可能需要非成员函数。选择取决于您是否真的要对维护某些不变量的类进行建模。成员示例
class writeData
{
public:
void write_data() const;
void write_data(const vector<int> & DATAFILE) const;
void write_data(const vector<int> & DATAFILE, string) const;
};
非成员的例子:
namespace writeData
{
void write_data();
void write_data(const vector<int> & DATAFILE);
void write_data(const vector<int> & DATAFILE, string);
};
注意:我已经对向量参数常量进行了引用,因为它们在函数中没有被moid化。另请参见“最麻烦的解析”,谢谢!我还必须在cpp文件中添加void,如下所示void writeData::write_data()BTW在类定义中使用构造函数的结尾使用const导致了一些问题,所以在把它们取出时,所有的东西都工作得很好。在C++中,多年来不必对代码进行编码,这有助于刷新遥远的内存。
WriteData wd;
wd.write_data(items);
namespace writeData
{
void write_data();
void write_data(const vector<int> & DATAFILE);
void write_data(const vector<int> & DATAFILE, string);
};
writeData::write_data(items);