我们说我有一个名为Test
的班级。在其中,我已经声明了一个名为testResults
的结构。然后我编写了一个名为performTest()
的成员函数。我希望这个函数改变struct变量的值(它还需要其他输入)。这就是我所做的:
(注意:我减少了代码,使您检查时不那么麻烦)
标题中的:
class Test : public BaseHardwareTest
{
Q_OBJECT
public:
explicit Test(QObject *parent = 0);
struct testResults {
int testOneRes[15];
int testTwoRes[5];
};
int performTest(int arg1, int arg2, struct testResults &testRes);
signals:
public slots:
};
来源:
int Test::performTest(int arg1, int arg2, Test::testResults &testRes)
{
for (int i = 0; i < 15; i++) {
if(arg1 < 12)
testRes.testOneRes[i] = -1;
else
testRes.testOneRes[i] = 1;
}
for (int i = 0; i < 5; i++) {
if(arg2 < 33)
testRes.testTwoRes[i] = -1;
else
testRes.testTwoRes[i] = 1;
}
return 1;
}
这是我的各种尝试之一。这个没有任何错误,但我不能使用它。 我无法从主 访问成员结构。我是OOP概念的新手,我无法使其发挥作用。
标题/来源部分有什么问题吗?如果没有,我该如何调用此功能?有什么帮助吗?
[编辑]问题已解决:
事实证明,这个问题完全是另一回事。我用 两个项目(一个是图书馆,另一个是用于测试 图书馆。我们分别称他们为 testLib 和测试人员 哪个有依赖性。当我在 testlib 项目中更改内容时,我 必须按顺序从测试人员的 main.cpp 转到相关的 testLib 位置 让我的IDE看到更改并进行相关更新。从那以后 在两个单独的文本编辑器窗口中工作,并没有做我所做的事情 上面说过,我的IDE没有看到
Test
类的新成员 当我输入Test:: testRes
时,我没有建议我 - 。这让我受益匪浅 认为我无法访问新的成员结构。谢谢大家 寻求帮助。
答案 0 :(得分:1)
struct testResults
不是该类的成员,它只是一个类型声明。您不会像访问类中的实际数据一样访问它。我认为这就是你所说的,所以这可能是混乱。
相反,您可以按如下方式创建实例:
Test::testResults myresults;
现在,您可以将myresults
传递给Test类的performTest
方法实例。
Test mytest;
Test::testResults myresults;
// Assumes "QString" (whatever it is) has a constructor that takes a string:
mytest.performTest("Hello", "Goodbye", myresults);
答案 1 :(得分:1)
您似乎正在定义错误的功能。您定义int Test::performTest(int arg1, int arg2, DDRTest::testResults &testRes)
,但应该定义int Test::performTest(QString arg1, QString arg2, Test::testResults &testRes)
。
答案 2 :(得分:1)
您的h文件和cpp文件不匹配:
你在h文件中的:
int performTest(QString arg1, QString arg2, struct testResults &testRes);
应该是
int performTest(int arg1, int arg2, testResults &testRes)
并在你的cpp文件中:
int Test::performTest(int arg1, int arg2, DDRTest::testResults &testRes)
应该是
int Test::performTest(int arg1, int arg2, Test::testResults &testRes)
你看到了区别吗?