我有一个名为Model.scala
的文件,该文件以下列行开头:
package chess
trait Content
在同一目录中,我有另一个名为Board.scala
的文件,该文件以下列内容开头:
package chess
import chess.Content
但是,在Board.scala
中,我收到此错误:
Error:(3, 8) object Content is not a member of package chess
import chess.Content
^
那么如何从其他文件导入Trait
?
答案 0 :(得分:1)
文件的位置无关紧要,当两个文件具有相同的包(在您的情况下为“象棋”)时,两个特征/类都应在范围内。因为这似乎不适合你,我的猜测是你试图在sbt之外运行它。
你可以更新以显示你的项目结构是什么,如果有的话,可以显示template<class T> class my_scoped_ptr
{
private:
T *t;
public:
my_scoped_ptr(T * _t) : t(_t) {}
~my_scoped_ptr() {
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
(void) sizeof(type_must_be_complete);
delete t;
}
};
class Holder
{
public:
Holder();
~Holder();
private:
class Impl;
my_scoped_ptr<Impl> _mptr;
};
文件吗?
答案 1 :(得分:0)
我知道这已经过时了,但我自己正在加强scala,可能会找到你想要的答案。
如果Board.scala中的特征和类位于同一个包中,则无需导入。 如果您在使用SBT的IntelliJ Idea中遇到此错误,可能需要重新同步SBT。
另外,你的Board.scala类应该有'with'来使用这个特征(而不是import):
class Board extends App with Content {