【问题标题】:Class function error C++类函数错误 C++
【发布时间】:2012-08-09 02:10:20
【问题描述】:

我有 3 个类,比如说 ClassA、ClassB 和 Validator。我想将 classA 和 classB 的一个变量传递给验证器,验证器将比较这些值,并返回一个字符串结果。我收到以下错误:错误:

请求'validatorObject'中的成员'compareValues',它是非类类型'Validator*'

ma​​in.cpp

cout << classAobject.compareValues(computer1->getValue(), classBobject->getValue());

validator.cpp

string Validator::compareValues(string classAvalue, string classBValue) {
if (classAvalue == "R") {
    if (classBvalue == "R") {
        return "Equal";
    }
}
// More will go in this function - just want to get it working first

}

validator.h

string compareValues(string classAvalue, string classBValue);

【问题讨论】:

  • 你在哪里声明classAobject
  • 我假设 compareValues 是在类 Validator 中声明的。(否则你有另一个不相关的问题)

标签: c++


【解决方案1】:

出现此错误是因为您需要使用-&gt; 运算符从指向类的指针访问类成员:cout &lt;&lt; classAobject-&gt;compareValues(.....)

Foo-&gt;bar() 等价于(*Foo).bar()Foo-&gt;baz 等价于(*Foo).baz

【讨论】:

  • 验证器必须比较 classA 和 classB 的值。 compareValues 是 Validator 类的一个函数。
  • 我假设classAobject的类型是Validator,否则问题肯定出在另一行
  • 不,classAobject 属于 ClassA 类型。我通过交换'。'摆脱了那个错误。对于'->',但现在我有一个段错误:(
  • 好吧,你需要用. 运算符找到你的对象Validator*(指向Validator)的位置。 (也许您需要用其他东西替换 classAObject,但这无关紧要)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多