C++ C++;应在';之前使用主表达式';代币
有人能给我解释一下为什么下面给出了一个错误,以及如何修复 编译错误是:C++ C++;应在';之前使用主表达式';代币,c++,C++,有人能给我解释一下为什么下面给出了一个错误,以及如何修复 编译错误是: error: expected primary-expression before ‘.’ token 简化类和方法: class test{ private: int data; public: test() : data(1){} test(const test& copy):data(copy.data){} //copy constructor
error: expected primary-expression before ‘.’ token
简化类和方法:
class test{
private:
int data;
public:
test() : data(1){}
test(const test& copy):data(copy.data){} //copy constructor
int getData(){
return data;
}
};
此方法不会像这样编译:
int getDataFromClass(const test& src){
return test.getData();
}
但它确实是这样的
int getDataFromClass(const test& src){
test t = test(src);
return t.getData();
}
第二种方法无法通过引用传递数据,因此是不可取的
我希望能够通过引用将类作为常量传入,并且能够使用一些getter方法,而不必创建本地副本
int getDataFromClass(const test& src){
return test.getData();
}
这里您应该使用
src
,因为它是变量名test
是类名,编译器会抱怨您试图对其调用方法。您的变量是const
,您正在调用非const成员函数
将您的成员函数重新定义为intgetdata()const{
,您应该可以
正如Ivaylo Strandjev所说,使用src
访问对象。因为
int getDataFromClass(const test& src){
return test.getData();
}
test
是一个类型,而不是一个对象。test
是一个类型。您需要一个该类型的对象。返回src.getData();
另外,将getData
声明为const。您的第一个短语没有回答特定的错误消息,第二个短语也没有解决问题。