参考 variables/pointers 和 class 成员的问题 [C++]
Troubles with reference variables/pointers an class members [C++]
我一直在做一个项目并且有很多 classes,其中一些看起来像这样:
class A
{
// stuff;
};
class B
{
A& test;
public:
B(A& _test) :
test(_test)
{};
void doStuff();
};
class C
{
A foo;
B bar(foo);
void exp()
{
bar.doStuff();
}
};
当 C::foo 不是类型名称时,这最终会中断 class C。在我更大的项目中,所有内容都分解为单独的 .cpp 和 .h 文件,如果我在 B.h 中 #include"C.h" 我看不到该错误,但仍然存在错误C.cpp 我的编译器完全无法识别 bar (Visual Studio 2013)。即使 A& 是 A* 而错误仍然存在(当然,在必要时将代码从引用更改为指针)。有人对这里发生的事情有任何提示吗?
这行代码:
B bar(foo);
尝试声明一个名为 bar
的成员函数,其中 returns 一个 B
并采用 foo
类型的参数。但是,在您的代码中, foo
不是类型 - 它是变量。我猜你是想初始化 bar
而不是:
B bar{foo}; // non-static data member initializers must be done with {}S
或者直接写出构造函数:
C()
: bar(foo)
{ }
此外,此构造函数将您的引用 test
分配给临时 _test
:
B(A _test) :
test(_test)
{ }
您想参考 _test
:
B(A& _test) : test(_test) { }
我一直在做一个项目并且有很多 classes,其中一些看起来像这样:
class A
{
// stuff;
};
class B
{
A& test;
public:
B(A& _test) :
test(_test)
{};
void doStuff();
};
class C
{
A foo;
B bar(foo);
void exp()
{
bar.doStuff();
}
};
当 C::foo 不是类型名称时,这最终会中断 class C。在我更大的项目中,所有内容都分解为单独的 .cpp 和 .h 文件,如果我在 B.h 中 #include"C.h" 我看不到该错误,但仍然存在错误C.cpp 我的编译器完全无法识别 bar (Visual Studio 2013)。即使 A& 是 A* 而错误仍然存在(当然,在必要时将代码从引用更改为指针)。有人对这里发生的事情有任何提示吗?
这行代码:
B bar(foo);
尝试声明一个名为 bar
的成员函数,其中 returns 一个 B
并采用 foo
类型的参数。但是,在您的代码中, foo
不是类型 - 它是变量。我猜你是想初始化 bar
而不是:
B bar{foo}; // non-static data member initializers must be done with {}S
或者直接写出构造函数:
C()
: bar(foo)
{ }
此外,此构造函数将您的引用 test
分配给临时 _test
:
B(A _test) :
test(_test)
{ }
您想参考 _test
:
B(A& _test) : test(_test) { }