0

我对 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
}
4

3 回答 3

2

该函数useful被声明为返回 a float,但您将其定义为返回 a int

对比

float useful(float, float);

对比

int foo::useful(float a, float b){
    //does something and returns an int
}

如果您将声明更改为int useful(float, float)并从函数返回某些内容,它将正常工作。

于 2011-04-08T01:27:13.470 回答
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) can't findfloat useful()或 b) 在您谈论时不知道您的意思int useful

useful确保这些匹配,并且在内部调用bar应该可以正常工作。

于 2011-04-08T01:28:18.330 回答
0

由于您尚未发布编译器给您的错误消息,我会猜测一下。.h 和 .cpp 文件中的返回类型useful()不匹配。如果您使它们匹配(均为 int 或均为 float),则一切都应按您的预期工作。

于 2011-04-08T01:29:18.537 回答