gpt4 book ai didi

c++ - 将模板类实例传递给另一个类的构造函数

转载 作者:行者123 更新时间:2023-11-28 06:33:05 25 4
gpt4 key购买 nike

我的代码:

方 block 世界.hpp

#ifndef BLOCKYWORLD_H
#define BLOCKYWORLD_H

#include <CImg.h>

namespace logic {
class BlockyWorld {
public:
BlockyWorld( const CImg<float>* heightmap );
};
}

#endif // BLOCKYWORLD_H

方 block 世界.cpp

#include "BlockyWorld.hpp"

namespace logic {
BlockyWorld::BlockyWorld( const CImg<float>* heightmap ) {}
}

主要.cpp

#include <CImg.h>
#include "logic/BlockyWorld.hpp"
//...
CImg<float> heigthMap;
logic::BlockyWorld world( &heigthMap );
//...

我在编译时遇到了很多错误:

主要.cpp:

include\logic\blockyworld.hpp(9): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
include\logic\blockyworld.hpp(9): error C2143: syntax error : missing ',' before '<'
main.cpp(85): error C2664: 'logic::BlockyWorld::BlockyWorld(const logic::BlockyWorld &)' : cannot convert argument 1 from 'cimg_library::CImg<float>' to 'const int'
1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

BlockyWorld.hpp & cpp

include\logic\blockyworld.hpp(9): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
include\logic\blockyworld.hpp(9): error C2143: syntax error : missing ',' before '<'
include\logic\blockyworld.cpp(4): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
include\logic\blockyworld.cpp(4): error C2143: syntax error : missing ',' before '<'

我不认为这是一个循环包含错误,它有时会导致我出现这些类型的错误=)。我一定是错误地定义了构造函数,或者我可能错误地定义了实现?一直在寻找一个小时的答案,所以我现在真的需要一个解释。

澄清一下——我不是初学者 c/c++ 程序员,但这些模板令人困惑 :(

祝你有美好的一天,感谢你的回答。

最佳答案

CImg 似乎是 cimg_library 命名空间的一部分。

using namespace cimg_library 添加到 BlockyWorld.hpp 文件的顶部,或者更改函数签名以像这样使用命名空间:

BlockyWorld( const cimg_library::CImg<float>* heightmap );

连同 πìντα ῥεῖ 关于匹配您的指针和引用类型的建议。

关于c++ - 将模板类实例传递给另一个类的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27202311/

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