问题的详细讨论见this link。我试图总结在类Point
中定义的两个实例变量,并将其分配给另一个变量temp
。
class Point{
public:
double x;
double y;
friend istream& operator>>(istream& input, Point& p);
double operator=(Point& p);
double getSqX(void);
double getSqY(void);
double LengthSquared(void);
};
double Point::getSqX(void){
return pow(x,2);}
double Point::getSqY(void){
return pow(y,2);}
double Point::LengthSquared(){ return getSqX() + getSqY(); }
istream& operator>>(istream& input, Point& p){
... // over load the >> operator
return input;
};
int main(){
double temp;
vector<vector<Point> > FFTfile= some function that loads data();
for (int i = 0; i < FFTfile.size(); i++){
for (int j = 0; j < FFTfile[i].size(); j++){
temp=FFTfile[j].LengthSquared();
}
}
return(0);
}
编辑:
基于这些建议,我创建了一个方法LengthSquared(),但我仍然得到以下错误:
error: 'class std::vector<Point>' has no member named 'LengthSquared' temp=FFTfile[j].LengthSquared();
答案 0 :(得分:1)
你永远不应该以这种方式重载赋值运算符。读取代码的人会感到困惑,因为赋值通常意味着..赋值给对象。
相反,创建一个像这样的方法
ssh
答案 1 :(得分:0)
赋值运算符应具有以下接口:
tmp <- setNames(vector("list", length(varibles)), varibles)
for(i in seq_along(varibles)){
tmp[[i]] <- database %>%
filter(get(varibles[i], envir = as.environment(.))==1)
}
tmp
#$Con1
# ID Con1 Con2
#1 1 1 1
#2 2 1 0
#3 4 1 0
#4 8 1 0
#5 10 1 0
#$Con2
# ID Con1 Con2
#1 1 1 1
或
Point& operator=(const Point& other);
允许分配其他类型。
您正在滥用分配运算符。使用常规方法。