小编mar*_*v81的帖子

"使用命名空间"到底做了什么?

以下C++测试代码没有链接(gcc 4.9.2,binutils 2.25).错误是In function 'main': undefined reference to 'X::test'.

01: #include <string>
02: #include <iostream>
03:
04: namespace X
05: {
06:     extern std::string test;
07: };
08:
09: using namespace X;
10: std::string test = "Test";
11:
12: int main()
13: {
14:    std::cout << X::test << std::endl;
15: }
Run Code Online (Sandbox Code Playgroud)

由于第09行,我期待第10行定义X::test在第06行声明的变量.我相信test在全局命名空间中声明和定义了一个不相关的变量,因此链接错误.

问题:有人可以解释为什么我的期望不正确,究竟发生了什么?

不是答案:

  • 我可以将它改为第10行std::string X::test = "Test";.
  • 我不应该使用"using namespace"开头.

c++ scope namespaces using-directives forward-declaration

19
推荐指数
2
解决办法
3413
查看次数

如何在Python中创建类的不同实例?

有人可以向我解释下面的代码.

class InnerTest:

    def __init__(self, value = 0):
        self.value = value

class OuterTest:

    def __init__(self, inner_test = InnerTest()):
        self.inner_test = inner_test

a = OuterTest()
b = OuterTest()

a.inner_test.value = 42
print b.inner_test.value
Run Code Online (Sandbox Code Playgroud)

它打印42,我预计0.

我打算创建两个OuterTest实例,每个实例都包含一个不同的InnerTest实例.相反,我得到了两个引用同一个InnerTest实例的OuterTest实例.

还有什么是正确的方法来实现我想要的东西?

python oop class instance

9
推荐指数
1
解决办法
265
查看次数