小编seb*_*ger的帖子

两个eclipse项目的循环依赖

我正在尝试用Java实现某种MVC.实际上它更像是一个MVP,但这对我的问题并不重要.

以下情况:我有一个用Netbeans制作的GUI(因为更好的GUIeditor),它经常更新和更改.

由于我的主项目在Eclipse中更易于维护,因此我选择将Netbeans项目作为单独项目导入Eclipse.所以这里我的项目" App"包含控制器和模型包以及GUI包含视图包的项目" ".问题是我遵循的模式在视图和控制器之间具有循环依赖性.每当视图发生更改时,控制器都会收到通知,决定从模型中获取哪些数据,然后对视图进行更改.

当我添加App到构建路径GUI和反过来时,我将最终得到此错误消息"在项目'GUI'的构建路径中检测到循环".我的意思是,这个循环已经在我的设计中了.

目前在启动时我通过以下方式向其控制器注册视图(这不是真正的代码,我试图缩短它)

package view;
import controller.*;
class viewA{
   ...
   public viewA() {
       controllerA.register(this);
   }
   ...  
}

package controller;
import view.*;
class controllerA implements SomeListener{
   ...
   protected viewA[] registeredViews;
   public static register(viewA interestedView){
       arrayPush(registeredViews,interestedView);
       interestedView.addSomeListener(this)    
   }
   ...
}
Run Code Online (Sandbox Code Playgroud)

因此,您可以通过将引用传递给控制器​​,然后将侦听器注册到此视图来进行连接.问题是:如果我没有GUI在项目App的构建路径导入不能得到解决,同样的情况,对于没有AppGUI构建路径.

我想保留这个项目结构,并坚持我的MVC架构.我该如何解决这个问题?你有什么建议?

java architecture eclipse classpath

1
推荐指数
1
解决办法
6773
查看次数

子类型中的"覆盖"实例变量:可能存在风险?

假设我有一个类SuperClass和两个继承自SuperClass的子类SubClassA和SubClassB.

 abstract class SuperClass{
   ...
   List someList;
   ...
 }

 class SubClassA extends SuperClass{
   ...
   List<String> someList;
   ...
 }

 class SubClassB extends SuperClass{
   ...
   List<Integer> someList;
   ...
 }
Run Code Online (Sandbox Code Playgroud)

这样很方便,因为我可以得到someList.size()Superclass,并在子类具有类型安全.问题是它没有"感觉"正确,你能想到这个我不知道的潜在危险吗?

java inheritance subclass type-safety

1
推荐指数
1
解决办法
685
查看次数

C++循环依赖:构造函数应该是什么样的?

我阅读了很多循环依赖主题,但所有这些主题似乎都与声明有关.我感兴趣的是如何构建相互依赖的对象,以及我的方法是否存在潜在的缺陷.考虑这个简单的例子:

#include <iostream>
#include <vector>
using namespace std;

class A; //Forward declaration

class B{
    public:
        B(string name, A* a):myA(a), name(name){
            cout << "Works with pointer" << endl;
        };
    private:
        A* myA;
        string name;

};

class A{
    public:
        A(){
            cout << "Constructing A" << endl;
            if(bs.empty()) cout << "Vector is empty" << endl;
            bs.push_back(B("First", this));
            cout << "Array has " << bs.size() << " elements." << endl;
        };
    private:
        std::vector<B> bs;
};


int main() {
    cout << "Start" << endl;
    A …
Run Code Online (Sandbox Code Playgroud)

c++ circular-dependency

1
推荐指数
1
解决办法
781
查看次数

找到库的"名称"(-L -l开关)

作为C++的新手,我有一个关于g ++编译器的基本问题,特别是包含库.考虑以下makefile:

CPPFLAGS= -I libraries/boost_1_43_0-bin/include/ -I libraries/jpeg-8b-bin/include/
LDLIBS= libraries/jpeg-8b-bin/lib/libjpeg.a
# LDLIBS= -L libraries/jpeg-8b-bin/lib -llibjpeg

all: main

main: main.o
    c++ -o main main.o $(LDLIBS)

main.o: main.cpp
    c++ $(CPPFLAGS) -c main.cpp

clean:
    rm -rf *.o main
Run Code Online (Sandbox Code Playgroud)

如您所见,我声明了两次LDLIBS变量.如果我使用上面的makefile,我的代码正在编译和工作.但是,如果我停用第一个LDLIBS条目并激活第二个LDLIBS条目,我会得到ld: library not found for -llibjpeg.我认为我libjpeg.a只是没有被召唤libjpeg但是有一些不同的名字.

有没有办法找出给定"库文件"的名称libsomething.alibsomething.dyn


好的,谢谢你的所有答案,它现在正在运作.一个小问题仍然存在:简单地省略"lib"或者是否有一种标准化的方法来查找名称是一种惯例吗?

c++ compiler-construction g++ command-line-arguments

0
推荐指数
1
解决办法
875
查看次数