我对c ++课程很陌生,所以这可能是一个非常明显的问题,但因为我对术语不熟悉,但我似乎无法获得正确的搜索词。
无论如何,我要做的是在类中使用公共函数访问同一类中的私有函数。
例如
//.h file:
class foo {
float useful(float, float);
public:
int bar(float);
};
//.cpp file:
int foo::useful(float a, float b){
//does something and returns an int
}
int foo::bar(float a){
//how do I access the 'useful' function in foo?? eg something like
return useful(a, 0.8); //but this doesnt compile
}
答案 0 :(得分:2)
声明函数useful
返回float
,但您将其定义为返回int
。
对比度
float useful(float, float);
VS
int foo::useful(float a, float b){
//does something and returns an int
}
如果您将声明更改为int useful(float, float)
并从函数返回一些内容,它将正常工作。
答案 1 :(得分:1)
您的退货类型不匹配:
//.h file:
class foo {
float useful(float, float); // <--- THIS ONE IS FLOAT ....
public:
int bar(float);
};
//.cpp file:
int foo::useful(float a, float b){ // <-- ...THIS ONE IS INT. WHICH ONE?
//does something and returns an int
}
int foo::bar(float a){
//how do I access the 'useful' function in foo?? eg something like
return useful(a, 0.8); //but this doesnt compile
}
编译器查找完全匹配的函数定义。你得到的编译器错误可能是抱怨a)无法找到float useful()
,或b)在你谈论int useful
时不知道你的意思。< / p>
确保这些匹配,并且在useful
内调用bar
应该可以正常工作。
答案 2 :(得分:0)
由于您尚未发布编译器提供给您的错误消息,我将猜测。 {。1}}的返回类型在.h和.cpp文件中不匹配。如果你使它们匹配(int或者两者都是浮点数),一切都应该按预期工作。