gpt4 book ai didi

c++ - 作为类参数的模板对象在编译前给出错误

转载 作者:太空狗 更新时间:2023-10-29 21:37:06 27 4
gpt4 key购买 nike

代码如下:

#include <iostream>
using namespace std;

template<class OwnerType>
class Move {
public:
Move() {}
Move(OwnerType &_owner) {
owner = &_owner;
}
void GetPosition() {
cout << owner->x << endl;
}
OwnerType *owner;
};

class Entity {
public:
int x = 50;
Move<Entity> *move;
};


int main() {
Entity en;
en.x = 77;
en.move = new Move<Entity>(en); // sign '=' is underlined by VS
en.move->GetPosition();
return 0;
}

它给出的错误:

a value of type "Move<Entity> *" cannot be assigned to an entity of type "Move<Entity> *"

程序正在编译,按预期工作并给出预期值,但错误仍然存​​在。这可能与模板和编译时间等有关,但我没有足够的知识知道这个错误实际上代表什么。

也不要担心泄漏,因为这只是我的测试,错误是我不明白的。

提前致谢。

最佳答案

Intellisense 以显示无效错误而闻名(参见示例 Visual Studio 2015: Intellisense errors but solution compiles),请按照评论中的建议信任编译器和链接器。

但是,这个错误很烦人,尝试关闭解决方案,删除.suo 文件(它是隐藏的),然后重新打开。更多关于 .suo 文件的信息在这里 Solution User Options (.Suo) File

旁注,在您的代码示例中 main 缺少 ()

关于c++ - 作为类参数的模板对象在编译前给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38393145/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com