C++将枚举传递给对象构造函数

发布于 2024-11-25 14:28:53 字数 555 浏览 0 评论 0原文

假设我有以下内容:

Foo::Foo() {
value = 25; //default constructor...
}

Foo::Foo(Enum bar) {
value = (int)bar; //purpose is to allow an integer to take enum constant's integer value.
}

来自...

enum Enum 
{
A = 25,
B = 50,
}

class Foo 
{
public:
    Foo();
    Foo(Enum bar);
private:
int value;
}

然而,如果我执行以下操作:

Enum bar = A; //A = 25

Foo * foo = new Foo(A); //error: "undefined reference to Foo::Foo(Enum)"

这是在 Eclipse CDT 3.6 中。为什么会发生这种情况?我能做些什么来解决这个问题吗?

Say I have the following:

Foo::Foo() {
value = 25; //default constructor...
}

Foo::Foo(Enum bar) {
value = (int)bar; //purpose is to allow an integer to take enum constant's integer value.
}

from...

enum Enum 
{
A = 25,
B = 50,
}

class Foo 
{
public:
    Foo();
    Foo(Enum bar);
private:
int value;
}

Yet, if I do the following:

Enum bar = A; //A = 25

Foo * foo = new Foo(A); //error: "undefined reference to Foo::Foo(Enum)"

This is in Eclipse CDT 3.6. Why is this happening? Is there anything I can do about this to solve the problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眉黛浅 2024-12-02 14:28:53

修复了一些语法错误后(Enum 定义中额外的 ,EnumFoo 之后缺少 ; 定义),您的代码可以在 gcc 中运行。检查此处:http://www.ideone.com/GZdNM

我不太明白你在说什么正在尝试使用 enum,但可以肯定的是,调用它 Enum 可能不是一个好主意......

After fixing a few syntax errors (extra , in Enum definition, missing ; after Enum and Foo definitions), your code was run-able in gcc. Check here: http://www.ideone.com/GZdNM

I don't really understand what you're trying to do with the enum, but for sure, calling it Enum is probably not a great idea...

離殇 2024-12-02 14:28:53

听起来您好像忘记将 foo.C 链接到最终应用程序中。

It sounds like you forgot to link foo.C into your final application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文