实例化一类图书馆对象?

时间:2013-03-01 00:12:38

标签: c++ class instantiation

我有一个关于C ++类和实例化的问题。以下代码的输出如下:

Poco库快速参考:http://pocoproject.org/docs/

这是一个测试 EXITING

我希望输出为:

这是一个测试 用户名
退出

基本上,myCreds打印出来的原因是什么? 代码:

#include <iostream>
#include <string>
#include <Poco/Net/HTTPBasicCredentials.h>

using namespace std;

class myTest{
public:
    string test;
    Poco::Net::HTTPBasicCredentials myCreds;
    myTest();
};  

myTest::myTest(){
    test = "this is a test";
    Poco::Net::HTTPBasicCredentials myCreds("username", "password");
}

int main(){
    myTest thisTest;
    cout << thisTest.test << "\n";
    cout << thisTest.myCreds.getUsername() << "\n";
    cout << "EXITING" << "\n";
}

感谢您的帮助 [R

4 个答案:

答案 0 :(得分:2)

您有两个myCreds个实例:一个属于thisTest,另一个在myTest的构造函数体内创建和销毁。

您应该将myCreds的构造函数编写为folows(以正确地初始化成员myCreds):

myTest::myTest()
    : test("this is a test")
    , myCreds("username", "password")
{
}

答案 1 :(得分:1)

您在类构造函数中将myCred声明为局部变量,从而覆盖类中的公共变量。当构造函数返回时,局部变量会消失。

答案 2 :(得分:0)

您的构造函数正在创建自己的myCreds,而不是初始化成员变量。

答案 3 :(得分:0)

看起来您正在重新创建HTTPBasicCredentials的本地实例,而不是在此处初始化您的公共成员:

myTest::myTest(){
    test = "this is a test";
    Poco::Net::HTTPBasicCredentials myCreds("username", "password");
}

构造函数中的myCreds实例将在构造完成时创建并抛弃。

初始化您的公共成员。