所以我有一个名为<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listItem"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/na"
android:textColor="@color/black"
android:textSize="@dimen/text_size_normal"
android:textStyle="bold" />
<TextView
android:id="@+id/dose"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/na"
android:textColor="#006600"
android:textSize="@dimen/text_size_normal"
android:textStyle="bold" />
<TextView
android:id="@+id/total_dose"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/na"
android:textColor="#006600"
android:textSize="@dimen/text_size_normal"
android:textStyle="bold" />
</LinearLayout>
的类,其中包含3个变量。
我还有另一个班级
CStudentEmploy
其中包含一个指针向量
CAnalizeData:CStudentEmploy
我也有istream运算符:
vector<CStudentEmploy*>m_vData;
我想通过以下方式从文件填充此向量:
friend istream& operator >> (istream& str,CStudentEmploy& obj)
{
str >> obj.m_strName >> obj.m_strFacNum >> obj.m_iMinutes;
return str;
}
如果我要填充对象向量,则这种方法有效。
我得到的错误是:
错误C2679二进制'>>':未找到采用'_Ty'类型的右侧操作数的运算符(或没有可接受的转换)
我了解迭代器存在问题,但无法真正解决。谢谢。
这是完整的代码:
CAnalizeData(const string &strFileName) {
ifstream ifile(strFileName.data());
copy(istream_iterator<CStudentEmploy*>(ifile), istream_iterator<CStudentEmploy*>(), back_inserter(m_vData));
}
答案 0 :(得分:0)
也许带有std::transform
的东西:
CAnalizeData(const string &strFileName) {
ifstream ifile(strFileName.data());
transform(istream_iterator<CStudentEmploy>(ifile),
istream_iterator<CStudentEmploy>(), back_inserter(m_vData),
[](const CStudentEmploy &e) { return new CStudentEmploy(e); });
}
在这里使用new
,因为我假设该对象将在堆栈上创建。