【发布时间】:2015-06-09 11:04:37
【问题描述】:
在我正在制作的程序中,我试图让某个类将数据作为参数传递给另一个类的函数。该数据恰好是来自第一个类的成员枚举器的变量。但是我遇到了很多错误。下面的代码是我正在尝试做的一个例子。我在他们的行上方的 cmets 中添加了错误:
main.cpp:
#include "A.h"
int main(int argc, char* args[]) {
A a;
a.callFunctionB();
return 0;
}
啊:
#pragma once
#include "B.h"
class B;
class A {
public:
enum Enumerator {x, y, z};
void callFunctionB();
private:
//C2146: syntax error : missing ';' before identifier 'b'
//C4430: missing type specifier - int assumed.
B b;
Enumerator e = x;
};
A.cpp:
#pragma once
#include "A.h"
void A::callFunctionB() {
//C2660: 'B::functionB' : function does not take 1 arguments
b.functionB(e);
}
B.h:
#pragma once
#include "A.h"
class A;
class B {
public:
//C2653: 'A': is not a class or namespace name
//C2061: syntax error : identifier 'Enumerator'
//C2653: 'A' is not a class or namespace name
void functionB(A::Enumerator e);
};
B.cpp:
#pragma once
#include "B.h"
#include <iostream>
void B::functionB(A::Enumerator e) {
std::cout << "It worked! Enumerator variable 'x' was passed to function B." << std::endl;
}
为什么我不能将一个类的成员枚举器的变量作为参数发送给另一个类的函数?
【问题讨论】:
-
我认为您在这里遇到了包含问题。
B.h包括A.h但A.h还包括B.h。
标签: c++ class parameters header enumerator